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

本文关键字:类型 新实例 实例 检索 何检索 MEF | 更新日期: 2023-09-27 18:04:56

在我的类中,我有一个导入类型的类:

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

类型定义如下:

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

我期待每当我从属性读取,得到一个新的实例对吗?或者不是……我一直得到相同的实例,如何在使用属性时强制t创建一个新实例?

许多谢谢,

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

您确定正在重新组合您的消费者类吗?NonShared创建策略将确保每次需要组合部件时创建一个新实例,因此我会检查它的另一边,这是您正在[Import]创建部件的类。这个类被正确地重组了吗?

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

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

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