我目前正致力于使用MEF扫描/撰写我的应用程序的扩展程序。我想将默认创建策略更改为非共享(代替共享),但要使其创建策略可以通过属性覆盖。换句话说,如果我没有在导出上指定创建策略,我希望MEF使用非共享。
我以前的实现不再适用于我,因为它会更改所有导入所需的创建策略。因此,如果我覆盖创建策略,则导出不会被合成。
我一直在寻找,最接近的是新的RegisrationBuilder,但我在VS2010中使用.NET 4(MEF 1)。我也无法找到ExportProviders的方法。
非常感谢任何帮助;提前谢谢!
答案 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;
}
}