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