有没有可能,或者我应该在哪里寻找一个扩展挂钩来定义MEF中的条件导入?
这有点像可选导入的反向(AllowDefault=true
)。我的情况是属性导入,如果已经设置了当前值,我不想将其覆盖。
谢谢
如果你在一个只读属性上设置了导入,那么你可以随心所欲地使用它。
public class Foo
{
[Import]
private object ImportData { set { if(this.Data == null) this.Data = value } }
public object Data { get; set; }
}
MEF不支持这样的功能。您可以编写一个属性,忽略第一个非空设置之后的所有设置:
private IContract _import;
[Import]
public IContract Import
{
get { return _import; }
set
{
if (_import == null)
{
_import = value;
}
}
}
我不确定这个的使用情况是什么,所以我也不确定这是否能帮到你。MEF仅在重新组合期间设置可重构导入项。