默认情况下,在MEF注册的任何部分都使用单例策略进行生命周期管理(每个容器一个).这是使用默认值指定CreationPolicy的Shared.我想你需要明确你需要什么......
你每次撰写时都想要一个新的实例吗?
如果是这样,您可以添加PartCreationPolicyAttribute到您的导出:
[PartCreationPolicy(CreationPolicy.NonShared), Export(typeof(IFoo))]
public class Foo : IFoo { }
Run Code Online (Sandbox Code Playgroud)
每当你使用容器编写一个类时,你都会得到一个新的实例Foo.
你想同时拥有两个独立的实例吗?
您可能想要考虑获取零件实例的替代模式.你可以使用一个ExportFactory允许你在需要的时候创建新实例,例如:
[Import]
public ExportFactory<IFoo> Factory { get; set; }
Run Code Online (Sandbox Code Playgroud)
附:
public IFoo CreateFoo()
{
return Factory.CreateExport().Value;
}
Run Code Online (Sandbox Code Playgroud)
(要ExportFactory<T>与非Silverlight应用程序一起使用,您应该在此处下载- ExportFactory<T>从未进入.NET 4,仅使用Silverlight).
| 归档时间: |
|
| 查看次数: |
2593 次 |
| 最近记录: |