在我的MEF应用程序中,我计划从两个方面加载模块。
一种方式就是这样。
protected override void ConfigureAggregateCatalog()
{
this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(PEMDAS.ModuleInit).Assembly));
this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(Bootstrapper).Assembly));
this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(Infrastructure.ObservableCommand).Assembly));
this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(Security.SecurityModule).Assembly));
this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(Tests.ModuleInit).Assembly));
}
另一个是在文件夹中查找程序集。我认为可以使用这两种方式。我计划首先加载文件夹,然后加载ConfigureAggregateCatalog
。
答案 0 :(得分:2)
如果我正确理解您的问题,您想知道如何从文件夹中的.dll程序集加载模块。这可以使用DirectoryCatalog完成。
//First create directory catalog and load modules from .dlls.
var dirCatalog = new DirectoryCatalog(folderToSearch, "*.dll");
this.AggregateCatalog.Catalogs.Add(dirCatalog);
//Next load the rest of the modules.
ConfigureAggregateCatalog();