では、クラス ライブラリ内では、MEF を使用しない方がよいのでしょうか?
次に例を示します。
ISomeInterface
5 ISomeInterface の実装
すべての ISomeInterface をインポートして使用する一度のクラス。
繰り返しますが、これはすべて単一の dll 内にあります。DLLなので、カタログを作るためのMEFのブートストラップはなく、一度使うだけでカタログを作るのはちょっと大変そうです。
MEFとその使い方を学んでいます。
グレッグ
では、クラス ライブラリ内では、MEF を使用しない方がよいのでしょうか?
次に例を示します。
ISomeInterface
5 ISomeInterface の実装
すべての ISomeInterface をインポートして使用する一度のクラス。
繰り返しますが、これはすべて単一の dll 内にあります。DLLなので、カタログを作るためのMEFのブートストラップはなく、一度使うだけでカタログを作るのはちょっと大変そうです。
MEFとその使い方を学んでいます。
グレッグ
これについてもう少し調べてみると、独自のパーツを作成するために DLL 内で MEF を使用できない理由はないようです。この質問をしたとき、アプリ全体を構成するために、インポートは主に Main() または App() 型の関数内にあると考えていました。ただし、アプリにエクスポートされる主要な部分で構成を行う必要がある場合でも、次のように MEF を使用してコンストラクターで構成できます。
//An aggregate catalog that combines multiple catalogs
var catalog = new AggregateCatalog();
//Adds all the parts found in the same assembly as the Program class
catalog.Catalogs.Add(new AssemblyCatalog(typeof(Program).Assembly));
//Create the CompositionContainer with the parts in the catalog
_container = new CompositionContainer(catalog);
//Fill the imports of this object
try
{
this._container.ComposeParts(this);
}
catch (CompositionException compositionException)
{
}