Ich versuche herauszufinden, wie Sie zur Laufzeit eine DLL in eine C # -Anwendung importieren und verwenden können. Verwenden von Assembly.LoadFile () Ich habe es geschafft, dass mein Programm die DLL lädt (dieser Teil funktioniert definitiv, da ich den Namen der Klasse mit ToString () abrufen kann), kann jedoch die 'Ausgabe' nicht verwenden. Methode aus meiner Konsolenanwendung. Ich kompiliere die DLL und verschiebe sie dann in das Projekt meiner Konsole. Gibt es einen zusätzlichen Schritt zwischen CreateInstance und der Verwendung der Methoden?
Dies ist die Klasse in meiner DLL:
namespace DLL
{
using System;
public class Class1
{
public void Output(string s)
{
Console.WriteLine(s);
}
}
}
und hier ist die Anwendung, die ich die DLL laden möchte
namespace ConsoleApplication1
{
using System;
using System.Reflection;
class Program
{
static void Main(string[] args)
{
var DLL = Assembly.LoadFile(@"C:\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\DLL.dll");
foreach(Type type in DLL.GetExportedTypes())
{
var c = Activator.CreateInstance(type);
c.Output(@"Hello");
}
Console.ReadLine();
}
}
}