Heim >Backend-Entwicklung >C++ >Kann ich eine .NET-Klasse nur aus einer DLL und einem Klassennamen dynamisch instanziieren?
Dynamisches Laden und Instanziieren von .NET-Assemblys
Ist es möglich, ein Objekt dynamisch zu erstellen, ohne explizit auf eine Assembly im Projekt zu verweisen, wenn nur eine DLL und ein Klassenname vorhanden sind? Diese Klasse entspricht der Schnittstellenspezifikation, sodass Sie sie nach der Instanziierung in eine Schnittstelle umwandeln können.
Montage- und Typinformationen
Lösung
Ja. Mit Assembly.LoadFrom
können Sie eine Baugruppe in den Speicher laden. Anschließend können Sie mit Activator.CreateInstance
eine Instanz des gewünschten Typs erstellen. Mithilfe der Reflektion müssen Sie zunächst nach dem Typ suchen:
<code class="language-csharp">Assembly assembly = Assembly.LoadFrom("MyNice.dll"); Type type = assembly.GetType("MyType"); object instanceOfMyType = Activator.CreateInstance(type);</code>
Verbesserungsplan
Sobald Sie den Namen der Assemblydatei und den Typnamen haben, können Sie mit Activator.CreateInstance(assemblyName, typeName)
den .NET-Typauflösungsmechanismus anweisen, den Typ zu bestimmen. Um den Fall zu bewältigen, dass dieser Versuch fehlschlägt, können Sie ihn in einen Try/Catch-Block einschließen und dann das Verzeichnis durchsuchen, in dem die zusätzliche Assembly möglicherweise gespeichert ist. An dieser Stelle verwenden Sie die zuvor erwähnte Methode.
Das obige ist der detaillierte Inhalt vonKann ich eine .NET-Klasse nur aus einer DLL und einem Klassennamen dynamisch instanziieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!