Le chargement d'assemblys, la localisation de classes et l'appel de méthodes de manière dynamique présentent des défis uniques. Cet article détaille une méthode sécurisée et efficace pour accomplir cette tâche.
L'approche courante consistant à charger directement une DLL et à accéder à ses classes conduit souvent à des erreurs de casting. Une solution supérieure exploite la puissance d’AppDomains.
Plutôt que de charger directement l'assembly, encapsulez-le dans son propre AppDomain. Cela offre une sécurité et un contrôle améliorés.
L'exemple de code amélioré :
<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>
Voici une répartition :
L'utilisation d'AppDomains fournit :
Pour les scénarios avancés nécessitant plus de contrôle sur le chargement et le déchargement dynamiques, le framework de compléments gérés (espace de noms System.AddIn) offre une solution robuste et puissante pour gérer les compléments et les extensions.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!