CSharp - 在Mef中,依赖程序集的一部分可以为空?

  显示原文与译文双语对照的内容

下面是我的问题。汇编A 包含一个导出接口,它由( 通过注入) 在我的应用程序中的许多类的构造函数导入。

应用程序 1通过将程序集添加到AggregateCatalog来使用程序集A 。 所有的工作都应该与应用程序 1一样。 但是,在应用程序 2中,我希望程序集的单个部分的值为空,基本上是不加载的。 我仍然希望使用这个部分的类的任何构造函数仍然通过mef调用。

因这里,我尝试从AggregateCatalog中排除程序集A,因这里很多类( 使用ImportingConstructor属性)的构造函数从来没有被命中。

如何使一切正常工作,但是在程序集中使用的接口值为 null,如果使用了它。

时间: 作者:

在这里找到答案: http://dailydotnettips.com/2011/09/06/importconstructor-to-inject-constructor-mef/。

导入的AllowDefault = true 将在容器不可以用时将该对象设置为默认值( 对象为空),因这里将运行时异常放松。


[ImportingConstructor]
public ExportContainer([Import(AllowDefault=true)]IService service)
{
 this.service= service;
}

因此,当我将所有程序集添加到AggregateCatalog时,我可以忽略程序集A 。 这使得应用程序 2工作正常 !

作者:
...