ホームページ >バックエンド開発 >C++ >DLL とクラス名だけから .NET クラスを動的にインスタンス化できますか?

DLL とクラス名だけから .NET クラスを動的にインスタンス化できますか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-19 09:02:08502ブラウズ

Can I Dynamically Instantiate a .NET Class from Just a DLL and Class Name?

.NET アセンブリの動的読み込みとインスタンス化

DLL とクラス名しかない場合、プロジェクト内のアセンブリを明示的に参照せずにオブジェクトを動的に作成することは可能ですか?このクラスはインターフェイス仕様に準拠しているため、インスタンス化後にインターフェイスにキャストできます。

アセンブリとタイプ情報

  • アセンブリ名: library.dll
  • タイプ名: Company.Project.Classname

解決策

はい。 Assembly.LoadFrom を使用すると、アセンブリをメモリにロードできます。その後、Activator.CreateInstance を使用して、目的のタイプのインスタンスを作成できます。リフレクションを使用すると、最初に型を検索する必要があります:

<code class="language-csharp">Assembly assembly = Assembly.LoadFrom("MyNice.dll");

Type type = assembly.GetType("MyType");

object instanceOfMyType = Activator.CreateInstance(type);</code>

改善計画

アセンブリ ファイル名と型名を取得したら、Activator.CreateInstance(assemblyName, typeName) を使用して .NET 型解決メカニズムに型を決定するように指示できます。この試みが失敗した場合に対処するには、これを try/catch ブロックでラップし、補足アセンブリが保存されているディレクトリを検索します。この時点で、前述の方法を使用します。

以上がDLL とクラス名だけから .NET クラスを動的にインスタンス化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。