4

私はC#でアプリケーションを作成し、そのための一種のAPIを追加しました。このAPIを使用すると、いくつかのインターフェイスルールの基礎となるdllとしてプラグインを記述できます。

OpenFileDialogを介してdllファイルを開き、そのコンテンツを使用できるようにしたいと思います。私のAPIはマネージドライブラリなので、参照を追加するだけですが、dllファイルの名前を知らなくてもdllを使用したいと思います。また、名前空間は別の各ライブラリです。

dllをロードしてその中でコードを実行するにはどうすればよいですか?

4

2 に答える 2

4

あなたが説明しているものは、一般にプラグインシステムと呼ばれています。「C# を使用してプラグイン システムを作成する」のようなものをグーグルで検索すると、おそらく次のような多くの情報が得られます。

http://www.codeproject.com/Articles/4691/Plugin-Architecture-using-C

基本的な考え方は次のとおりです。

  • プラグインがプログラムから情報を取得できるように、プログラムが実装するインターフェースを定義します。
  • すべてのプラグインが実装するインターフェースを定義して、プログラムが何かを行うプラグインのメソッドを呼び出せるようにします。
  • これらのインターフェイスを、プログラムとプラグイン dll によって参照される別の dll に入れます。
  • OpenFileDialog など、プラグイン インターフェイスを実装するタイプの dll を見つける方法を提供します。
  • dll をロードし、プラグイン インターフェイスを実装するタイプを見つけます (リフレクションを使用)。
  • リフレクションを使用してこれらの型をインスタンス化します。
  • 必要に応じて、インターフェイスを介してこれらの型のメソッドを呼び出します。

マネージド/ノンマネージドについて。マネージド DLL は、.net マネージド ランタイムを使用してビルド/コーディングされたものです。などの .net 言語でコーディングされたものです。

管理されていない dll は、多かれ少なかれ別の言語でコード化されたものです。

あなたが管理されていない dll と呼んだものは、動的に読み込まれる管理された dll と呼ばれます。つまり、これはまだマネージ dll (.net 言語でコード化されている) ですが、プログラムが実行されるまでロードされません。

于 2012-09-24T15:22:29.347 に答える
1

Assembly.LoadFrom メソッド (文字列)を使用して、dll ファイルからマネージ アセンブリを読み込むことができます(アセンブリの読み込みのベスト プラクティスも参照してください)。

于 2012-09-24T15:58:41.980 に答える