MEF 有条件导入

发布于 2024-10-26 23:14:36 字数 132 浏览 3 评论 0原文

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

与可选导入 (AllowDefault=true) 相反。我拥有的是属性导入,如果已经设置了当前值,我不想将其清除。

干杯

Is it possible, or where should I look for an extension hook to define a conditional import in MEF?

Sort of the inverse of an optional import (AllowDefault=true). What I have is a property import and I don't want to blow the current value away if it has already been set.

Cheers

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

勿忘初心 2024-11-02 23:14:36

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

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

    public object Data { get; set; }
}

If you set an import on a set-only property, you can do whatever you want with it.

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

    public object Data { get; set; }
}
没有伤那来痛 2024-11-02 23:14:36

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

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

我不确定它的用例是什么,所以我不确定这是否会对您有帮助。除了重组期间的可重组导入之外,MEF 不会多次设置导入。

MEF doesn't have support for something like this. You could write a property that ignored any sets after the first non-null one:

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

I'm not sure what the use case for this is, so I'm not sure if this will help you. MEF doesn't set imports more than once except for recomposable imports during recomposition.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文