MEF を使用して個々のアドインを読み込もうとしています。私のシナリオは次のとおりです。アプリケーションが起動すると、一連のアドインが検索され、アプリに読み込まれます。
この起動段階の後、ユーザーが選択したアドインをロードできるようにしたいと考えています。これは私が本当に苦労しているビットです。
私の初期読み込みコードは次のとおりです。
var compositionContainer = new CompositionContainer();
var assemblyCatalog = new AssemblyCatalog(@"C:\MyPath\Experiment.dll");
.. catalogs for other addins..
var aggregateCatalog = new AggregateCatalog(assemblyCatalog);
CompositionContainer container = new CompositionContainer(aggregateCatalog);
container.ComposeParts(this);
foreach (var addin in addins)
{
addin.OnLoad(this);
}
新しいアドインを既存のコンテナーのカタログに追加できるはずですが、追加する方法が見つかりません。以下は機能しません。
var assemblyCatalog = new AssemblyCatalog(filePath);
var catalog = this.compositionContainer.Catalog as AggregateCatalog;
catalog.Catalogs.Add(assemblyCatalog);
this.compositionContainer.ComposeParts(this);
filePathの dll にあるアドインをロードするにはどうすればよいですか。さらに、既に読み込まれているアドインでは呼び出さずに、その新しいアドインで .OnLoad メソッドを呼び出す方法はありますか?