アセンブリの読み込み、クラスの検索、およびメソッドの動的呼び出しには、特有の課題が伴います。 この記事では、このタスクを達成するための安全かつ効率的な方法について詳しく説明します。
DLL を直接ロードしてそのクラスにアクセスする一般的なアプローチでは、キャスト エラーが発生することがよくあります。 優れたソリューションは AppDomain の力を活用します。
アセンブリを直接ロードするのではなく、アセンブリを独自の AppDomain 内にカプセル化します。これにより、セキュリティと制御が強化されます。
改良されたコード例:
<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>
内訳は次のとおりです:
AppDomain を採用すると、次のことが可能になります。
動的なロードとアンロードをより詳細に制御する必要がある高度なシナリオの場合、マネージド アドイン フレームワーク (System.AddIn 名前空間) は、アドインと拡張機能を管理するための堅牢で強力なソリューションを提供します。
以上が動的にロードされたアセンブリからクラスメソッドを安全にロード、検索、実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。