実行時のアセンブリとインスタンス化されたクラスの動的読み込み
DLL ファイル名とクラス名だけがわかっていて、プロジェクト内のアセンブリを明示的に参照せずに、実行時にオブジェクトをインスタンス化することは可能ですか?このクラスは通常、インスタンス化後の型変換を可能にするインターフェイスを実装します。
アセンブリ名: library.dll タイプ名: Company.Project.Classname
ファイル パスがありません
DLL の絶対パスがないため使用できません。 DLL は、アプリケーション ルート、system32、または GAC に配置される場合があります。 Assembly.LoadFile
解決策
それはできます。 を使用してアセンブリをメモリに読み込みます。次に、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>
改善されたソリューション
アセンブリ ファイル名と型名を指定すると、 を型に解決できます。これは、エラー処理のために try/catch ブロックでラップできます。それが失敗した場合は、他のアセンブリが存在する可能性のあるディレクトリが検索され、必要に応じて前の方法が適用されます。 Activator.CreateInstance(assemblyName, typeName)
以上がDLL と型名だけを知っていれば、実行時にクラスをインスタンス化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。