我遇到的问题是我想从模块字典中导入类型。但由于基于插件的模块化,一些导入可能会失败。
但如果只有一次导入失败,则不会导入任何内容 - 这当然不是必需的。
try
{
// Use the binary directory
var catalog = new DirectoryCatalog(AssemblyDirectory);
var container = new CompositionContainer(catalog);
// Build the composition batch
var compositionBatch = new CompositionBatch();
compositionBatch.AddPart(this); // for discovering modules
// Compose everything
container.Compose(compositionBatch);
}
catch (ReflectionTypeLoadException loadException)
{
// Nothing will be done here
}
正确和想要的行为是,应导入所有匹配类型,但忽略失败。
我怎样才能做到这一点? 提前致谢
答案 0 :(得分:2)
This answer有一个如何忽略失败的程序集的示例。从您正在使用的目录中获取程序集列表,然后为每个程序集创建一个AssemblyCatalog,按照here所述强制执行错误,然后将未发生故障的目录放入AggregateCatalog。