在我的班级中,我有一个类导入这样的类型:
[Import]
public ContactViewModel ContactViewModel { get; set; }
类型的定义如下:
[PartCreationPolicy(CreationPolicy.NonShared)]
[Export(typeof(ContactViewModel))]
public class ContactViewModel {}
我期待每当我从房产中读到新的实例时,我都在期待? 或者也许不是......我一直在使用相同的实例,在使用该属性时如何强制使我成为一个新实例?
非常感谢,
答案 0 :(得分:5)
你确定要重组你的消费者阶层吗? NonShared
创建策略将确保每次需要编写部件时都会创建一个新实例,因此我会检查它的另一面,即[Import]
所在的类。部分。该类是否正确重组?
您的另一个选择是使用ExportFactory
,例如:
[Import] public ExportFactory<ContactViewModel> ViewModelFactory { get; set; }
答案 1 :(得分:1)
您应该创建一个工厂并将其导出,然后将其用作您的财产。 MEF部件创建策略适用于MEF构造具有依赖性的对象时,而不是在访问这些依赖性时。