MEF有条件导入

时间:2011-03-23 23:41:56

标签: c# .net mef

是否可以,或者我应该在哪里寻找扩展挂钩来定义MEF中的条件导入?

可选导入(AllowDefault=true)的反转排序。我所拥有的是属性导入,如果已经设置了,我不想将当前值消除。

干杯

2 个答案:

答案 0 :(得分:4)

如果您在仅限设置的属性上设置导入,则可以使用它执行任何操作。

public class Foo
{
    [Import]
    private object ImportData { set { if(this.Data == null) this.Data = value } }

    public object Data { get; set; }
}

答案 1 :(得分:1)

MEF不支持这样的事情。您可以编写一个在第一个非空零之后忽略任何集合的属性:

private IContract _import;
[Import]
public IContract Import
{
    get { return _import; }
    set
    {
        if (_import == null)
        {
            _import = value;
        }
    }
}

我不确定这个用例是什么,所以我不确定这对你有帮助。除重组期间可重新组合的进口外,MEF不会多次设置进口。