ホームページ > バックエンド開発 > C++ > C# で DLL を動的にロードして使用するにはどうすればよいですか?

C# で DLL を動的にロードして使用するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-14 09:37:44
オリジナル
410 人が閲覧しました

How Can I Dynamically Load and Use DLLs in C#?

DLL の C# 動的読み込み

実行時に DLL をロードして使用することは、C# アプリケーションの一般的なシナリオです。これにより、開発者は外部コードをロードしてプログラムの機能を拡張できます。

通常、実行時に DLL をロードするには Assembly.LoadFile() を使用します。ただし、DLL をロードしただけでは、そのメソッドにすぐにアクセスできるわけではありません。ここで、リフレクションとダイナミック オブジェクトの概念が登場します。

リフレクション

リフレクションには、実行時の型のチェックと操作が含まれます。メンバーにアクセスし、コンパイル時に不明なメソッドを呼び出すことができます。提供されている例では、リフレクションを使用して、ロードされた DLL から「Output」メソッドを呼び出すことができます:

<code class="language-csharp">foreach (Type type in DLL.GetExportedTypes())
{
    var c = Activator.CreateInstance(type);
    type.InvokeMember("Output", BindingFlags.InvokeMethod, null, c, new object[] {@"Hello"});
}</code>
ログイン後にコピー

動的 (.NET 4.0 以降)

動的オブジェクトを使用すると、メンバーに動的にアクセスしたりメソッドを呼び出したりする際の柔軟性が高まります。 dynamic キーワードを使用すると、ロードされた型のインスタンスを dynamic にキャストし、そのメンバーに直接アクセスできます。

<code class="language-csharp">foreach (Type type in DLL.GetExportedTypes())
{
    dynamic c = Activator.CreateInstance(type);
    c.Output(@"Hello");
}</code>
ログイン後にコピー

どちらの場合も、コードは実行時にロードされた DLL から「Output」メソッドを正常に呼び出し、C# アプリケーションでその機能にアクセスできるようになります。

以上がC# で DLL を動的にロードして使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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