gpt4 book ai didi

static - MEF 用于具有静态属性的组合

转载 作者:行者123 更新时间:2023-12-01 15:50:05 25 4
gpt4 key购买 nike

是否可以使用具有静态属性的 MEF 组合?

我平时做的是

MyClass obj = new MyClass();
MEFHelper.Compose(obj);

public class MEFHelper
{
//....
public static void Compose(object o)
{
var batch = new CompositionBatch();
batch.AddPart(o);
_container.Compose(batch);
}
}

但这只适用于实例对象。有什么建议吗?

谢谢

最佳答案

我会质疑您是否需要使用静态属性而不是实例属性。容器以自动处理实例的方式设计,当您使用静态属性时它当然不能这样做,因为这些属性的生命周期和使用是不确定的。

如果您真的想组成一个静态属性,您可能需要满足对属性本身的导入,例如:

public static class SomeStaticClass
{
public static SomeObject Instance { get; private set; }
}

SomeStaticClass.Instance = container.GetExportedValue<SomeObject>();

SomeStaticClass.Instance = new SomeObject();
container.SatisfyImportsOnce(SomeStaticClass.Instance);

但实际上,我会解决您的静态类型设计,看看您是否可以将其实现为实例类型。

关于static - MEF 用于具有静态属性的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9593247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com