C# dynamisches Laden der DLL
Das Laden und Verwenden von DLLs zur Laufzeit ist ein häufiges Szenario in C#-Anwendungen. Dadurch können Entwickler externen Code laden und die Funktionalität ihrer Programme erweitern.
Verwenden Sie normalerweise Assembly.LoadFile()
, um DLLs zur Laufzeit zu laden. Das einfache Laden der DLL ermöglicht jedoch keinen sofortigen Zugriff auf ihre Methoden. Hier kommen die Konzepte der Reflexion und der dynamischen Objekte ins Spiel.
Reflexion
Reflexion beinhaltet das Überprüfen und Bearbeiten von Typen zur Laufzeit. Es ist in der Lage, auf Mitglieder zuzugreifen und Methoden aufzurufen, die zur Kompilierungszeit unbekannt sind. Im bereitgestellten Beispiel können Sie Reflection verwenden, um die Methode „Output“ aus einer geladenen DLL aufzurufen:
<code class="language-csharp">foreach (Type type in DLL.GetExportedTypes()) { var c = Activator.CreateInstance(type); type.InvokeMember("Output", BindingFlags.InvokeMethod, null, c, new object[] {@"Hello"}); }</code>
Dynamisch (.NET 4.0 und höher)
Dynamische Objekte ermöglichen eine größere Flexibilität beim dynamischen Zugriff auf Mitglieder und beim Aufrufen von Methoden. Mit dem Schlüsselwort dynamic
können Sie eine Instanz eines geladenen Typs in dynamic
umwandeln und direkt auf seine Mitglieder zugreifen:
<code class="language-csharp">foreach (Type type in DLL.GetExportedTypes()) { dynamic c = Activator.CreateInstance(type); c.Output(@"Hello"); }</code>
In beiden Fällen ruft der Code zur Laufzeit erfolgreich die „Output“-Methode der geladenen DLL auf, sodass Sie in Ihrer C#-Anwendung auf deren Funktionalität zugreifen können.
Das obige ist der detaillierte Inhalt vonWie kann ich DLLs in C# dynamisch laden und verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!