Wie kann ich eine DLL-Klasse zur Laufzeit laden?
-
Also noch mal meine Frage:
Wie kann ich eine DLL-Klasse zur Laufzeit laden?Also das Programm "kennt" zur Entwicklungszeit nur das folgende Interface:
public interface IMyInterface { int GetValue(); }
In der DLL steckt folgendes:
public class MyClass : IMyInterface { public int GetValue() { return 10; } }
Zur lauf Laufzeit erhält das Programm ein Pfad der DLL, sowie den Namen der Klasse, die sich in der DLL befindet:
public class MyUser { public IMyInterface GetInterface(string Path, string ClassName) { ... } }
Ok und jetzt seid ihr dran! Wie kann ich meine Idee verwirklichen?
-
In der MSDN ist schonmal das zu finden
Das nächste ist die Klasse Assembly mit der man zur Laufzeit Resourcen in eine Anwendung laden kann.
Deine Klasse[n] auch das Interface die Du laden möchtest musst Du schonmal in einem sepaeraten Projekt namens "Klassenbibliothek" unterbringen.
Das .NET macht aus diesem "Klassenbiblithek"-Projekt eine konform DLL zur Verwendung in .NET-Applikationen. Dann hast Du eine Resource geschaffen die man statisch oder dynamisch in ein Projekt laden kann.Diese kannst Du dann z.B. über "Verweis hinzufügen" im "Projekt Explorer"
mit einem anderen C#-Projekt statisch verheiraten.Oder eben dynamisch über Assembly-Objekt ins Programm laden.