私はMEFを使用してDLLをロードする必要がありますが、読んでいるチュートリアルの情報は役に立ちませんでした。MEF DLLを1つずつロードする
This siteは、コードの一部を示しています(下に表示されています)。実際には何も説明していません。
private void LoadPlugins() {
var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
var container = new CompositionContainer(catalog);
var batch = new CompositionBatch();
batch.AddPart(this);
container.Compose(batch);
}
基本的には、私はRunメソッドとのインターフェイスを持っていて、そのインターフェイスをいくつかのDLLで実装しています。私は後だが
bob = LoadDll(dllPath);
bob.Run();
は「ボブ」のタイプを指定する方法があり、この(擬似コード)のような何かを行うことができるようにすることですか、それが一般的なのでしょうか?もし誰かが私が本当に感謝することができます!
どのようなものを読み込むのですか? MEFのポイントは、抽象/インタフェース定義以外の具体的な型については何も知らないことです。特定のDLLからインポートをロードすることが適切であると判断する方法はありますか? – arootbeer
@arootbeer実際、それはMEFの使い方の1つですが、インスタンス化しようとしている具体的な型をすでに知っていれば完全に有効です。しかし、私はこのケースでの使用法は、OPが達成しようとしているものについては過度のものであるかもしれないと思います。アセンブリがどのタイプの型を公開するか(または型を公開するか)の実行時の検出が必要な場合、MEFはpefectです。 – SRM