MEF - 将默认创建策略更改为NonShared

时间:2012-12-28 14:35:43

标签: c# dependency-injection inversion-of-control mef

我目前正致力于使用MEF扫描/撰写我的应用程序的扩展程序。我想将默认创建策略更改为非共享(代替共享),但要使其创建策略可以通过属性覆盖。换句话说,如果我没有在导出上指定创建策略,我希望MEF使用非共享。

我以前的实现不再适用于我,因为它会更改所有导入所需的创建策略。因此,如果我覆盖创建策略,则导出不会被合成。

我一直在寻找,最接近的是新的RegisrationBuilder,但我在VS2010中使用.NET 4(MEF 1)。我也无法找到ExportProviders的方法。

非常感谢任何帮助;提前谢谢!

1 个答案:

答案 0 :(得分:0)

我设法创建了一个MEF wrapper,我将其用作app bootstrap。 在我使用MEF的项目中,我有mu自定义属性,我用它来控制脚趾实例化模式。 属性的自定义实现将是:

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)]
public class BusinessLogicImportAttribute : ConstraintImportAttribute
{
    public BusinessLogicImportAttribute()
        : base(typeof(IBusinessController))
    {
        base.RequiredCreationPolicy = RequiredCreationPolicy = CreationPolicy.NonShared;
    }
}