ホームページ > バックエンド開発 > C++ > DLL と型名だけを知っていれば、実行時にクラスをインスタンス化できますか?

DLL と型名だけを知っていれば、実行時にクラスをインスタンス化できますか?

Linda Hamilton
リリース: 2025-01-19 09:21:09
オリジナル
549 人が閲覧しました

Can I Instantiate a Class at Runtime Knowing Only its DLL and Type Name?

実行時のアセンブリとインスタンス化されたクラスの動的読み込み

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

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