MEF:如何检索类型的新实例?

时间:2011-08-07 12:51:37

标签: c# .net mef

在我的班级中,我有一个类导入这样的类型:

[Import]
public ContactViewModel ContactViewModel { get; set; }

类型的定义如下:

[PartCreationPolicy(CreationPolicy.NonShared)]
[Export(typeof(ContactViewModel))]
public class ContactViewModel {}

我期待每当我从房产中读到新的实例时,我都在期待? 或者也许不是......我一直在使用相同的实例,在使用该属性时如何强制使我成为一个新实例?

非常感谢,

2 个答案:

答案 0 :(得分:5)

你确定要重组你的消费者阶层吗? NonShared创建策略将确保每次需要编写部件时都会创建一个新实例,因此我会检查它的另一面,即[Import]所在的类。部分。该类是否正确重组?

您的另一个选择是使用ExportFactory,例如:

[Import] public ExportFactory<ContactViewModel> ViewModelFactory { get; set; }

答案 1 :(得分:1)

您应该创建一个工厂并将其导出,然后将其用作您的财产。 MEF部件创建策略适用于MEF构造具有依赖性的对象时,而不是在访问这些依赖性时。