実行時にクラスインスタンスを動的に作成します
DLL 名とクラス名がわかれば、プロジェクトにアセンブリ参照を追加せずに、実行時にオブジェクト インスタンスを作成できます。この機能は、プラグイン システムや依存関係の注入などのシナリオに特に適しています。
Assembly.LoadFrom() を使用する
アセンブリをメモリにロードするには、Assembly.LoadFrom() メソッドを使用し、DLL ファイルへのパスを指定します。
<code class="language-csharp">Assembly assembly = Assembly.LoadFrom("library.dll");</code>
Type オブジェクトの検索
アセンブリをロードした後、リフレクションを使用して特定の型を見つけます。
<code class="language-csharp">Type type = assembly.GetType("Company.Project.Classname");</code>
インスタンスの作成
最後に、Activator.CreateInstance() を使用して、次のタイプのオブジェクト インスタンスを作成します。
<code class="language-csharp">object instanceOfMyType = Activator.CreateInstance(type);</code>
不明な DLL の場所の処理
DLL への絶対パスがない場合は、.NET の型解決メカニズムを利用できます。
<code class="language-csharp">object instanceOfMyType = Activator.CreateInstance("library.dll", "Company.Project.Classname");</code>
このメソッドは、アプリケーション ルート、system32、GAC などのさまざまな場所を自動的に検索して、アセンブリを見つけて型を解決します。
高度なカスタマイズ
必要に応じて、カスタム DLL 検索メカニズムを実装して、特定のディレクトリ内の DLL を検索することで、このソリューションを拡張できます。これにより、既定の型解決メカニズムでは検索されない他のアセンブリを保存するシナリオでの柔軟性が向上します。
以上がアセンブリと型名からクラスを動的にインスタンス化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。