撰写零件,即使一个导出失败也是如此

时间:2013-05-06 14:39:42

标签: c# mef

我遇到的问题是我想从模块字典中导入类型。但由于基于插件的模块化,一些导入可能会失败。

但如果只有一次导入失败,则不会导入任何内容 - 这当然不是必需的。

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
}

正确和想要的行为是,应导入所有匹配类型,但忽略失败。

我怎样才能做到这一点? 提前致谢

1 个答案:

答案 0 :(得分:2)

This answer有一个如何忽略失败的程序集的示例。从您正在使用的目录中获取程序集列表,然后为每个程序集创建一个AssemblyCatalog,按照here所述强制执行错误,然后将未发生故障的目录放入AggregateCatalog。