.NET アセンブリの動的読み込みとインスタンス化
DLL とクラス名しかない場合、プロジェクト内のアセンブリを明示的に参照せずにオブジェクトを動的に作成することは可能ですか?このクラスはインターフェイス仕様に準拠しているため、インスタンス化後にインターフェイスにキャストできます。
アセンブリとタイプ情報
解決策
はい。 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 サイトの他の関連記事を参照してください。