ホームページ > バックエンド開発 > C++ > アセンブリと型名からクラスを動的にインスタンス化するにはどうすればよいですか?

アセンブリと型名からクラスを動的にインスタンス化するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-19 09:07:13
オリジナル
285 人が閲覧しました

How Can I Instantiate a Class Dynamically from its Assembly and Type Name?

実行時にクラスインスタンスを動的に作成します

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート