Das dynamische Laden von Assemblys, das Auffinden von Klassen und das Aufrufen von Methoden stellt einzigartige Herausforderungen dar. In diesem Artikel wird eine sichere und effiziente Methode zur Bewältigung dieser Aufgabe beschrieben.
Der übliche Ansatz, eine DLL direkt zu laden und auf ihre Klassen zuzugreifen, führt häufig zu Umwandlungsfehlern. Eine überlegene Lösung nutzt die Leistungsfähigkeit von AppDomains.
Anstatt die Assembly direkt zu laden, kapseln Sie sie in ihrer eigenen AppDomain. Dies bietet mehr Sicherheit und Kontrolle.
Das verbesserte Codebeispiel:
<code class="language-csharp">var domain = AppDomain.CreateDomain("NewDomainName"); var t = typeof(TypeIWantToLoad); var runnable = domain.CreateInstanceFromAndUnwrap(@"C:\myDll.dll", t.Name) as IRunnable; if (runnable == null) throw new Exception("broke"); runnable.Run();</code>
Hier ist eine Aufschlüsselung:
Der Einsatz von AppDomains bietet:
Für erweiterte Szenarien, die mehr Kontrolle über das dynamische Laden und Entladen erfordern, bietet das Managed Add-Ins Framework (System.AddIn-Namespace) eine robuste und leistungsstarke Lösung für die Verwaltung von Add-Ins und Erweiterungen.
Das obige ist der detaillierte Inhalt vonWie kann ich eine Klassenmethode aus einer dynamisch geladenen Assembly sicher laden, finden und ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!