gpt4 book ai didi

MEF 和同一类的两个实例

转载 作者:行者123 更新时间:2023-12-04 17:23:57 25 4
gpt4 key购买 nike

如何将同一类或接口(interface)的两个实例放入 MEF?我将如何检索它们?

最佳答案

默认情况下,向 MEF 注册的任何部分都使用单例策略进行生命周期管理(每个容器一个)。这是使用默认值 CreationPolicy 指定的的 Shared .我认为你需要明确你需要什么......

您是否在每次作曲时都想要一个新实例?

如果是这样,您可以添加 PartCreationPolicyAttribute到您的导出:

[PartCreationPolicy(CreationPolicy.NonShared), Export(typeof(IFoo))]
public class Foo : IFoo { }

任何时候你使用你的容器编写一个类,你都会得到一个 Foo 的新实例。 .

您是否同时需要两个独立的实例?

您可能需要考虑另一种获取零件实例的模式。您可以使用 ExportFactory这将允许您在需要时创建新实例,例如:

[Import]
public ExportFactory<IFoo> Factory { get; set; }

与:

public IFoo CreateFoo()
{
return Factory.CreateExport().Value;
}

(要将 ExportFactory<T> 与非 Silverlight 应用程序一起使用,您应该下载它 here - ExportFactory<T> 从未进入 .NET 4,只有 Silverlight)。

关于MEF 和同一类的两个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5238694/

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