1
我正嘗試使用MEF加載單個加載項。我的場景如下所示:當我的應用程序啓動時,它將搜索一組加載項並將它們加載到我的應用程序中。使用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);
我如何可以加載加載項是在DLL的文件路徑。此外,有沒有什麼辦法可以在新加載項上調用.OnLoad方法,而不必在已加載的方法上調用它?
謝謝阿迪。該演示應用程序非常出色,絕對是我正在尋找的功能。 –