Heim > Backend-Entwicklung > C++ > Kann ich eine .NET-Klasse nur aus einer DLL und einem Klassennamen dynamisch instanziieren?

Kann ich eine .NET-Klasse nur aus einer DLL und einem Klassennamen dynamisch instanziieren?

Barbara Streisand
Freigeben: 2025-01-19 09:02:08
Original
502 Leute haben es durchsucht

Can I Dynamically Instantiate a .NET Class from Just a DLL and Class Name?

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

  • Assembly-Name: Library.dll
  • Typname: Company.Project.Classname

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage