1

使用 MEF 和 Prism v4 时,推荐[Import]的 s 方法是什么?这两个调用之间有什么区别(如果有的话)?

选项1:

public class TestClass
{
    [Import]
    private IRegionManager _RegionManager;

    public TestClass()
    {
        // stuff here
    }
}

选项 2:

public class TestClass
{
    private IRegionManager _RegionManager;

    [ImportingConstructor]
    public TestClass(IRegionManger regionManager)
    {
        this._RegionManager = regionManager;
        // stuff here
    }
}

这些之间有什么区别?推荐哪个?

4

2 回答 2

2

这是风格问题,但我ImportingConstructorImport田野更喜欢。允许您定义一个在ImportingConstructor有和没有 MEF 支持的情况下都可用的对象。合同很清楚,程序员也很好理解。

Import另一方面,使用 MEF 可以让您的课程更加实用。开发人员习惯于向构造函数提供对象的依赖关系,而不是查看对象的所有属性并确定构造后需要设置哪些属性。

于 2012-01-26T16:48:09.167 回答
2

使用 [ImportingConstructor] 您可以在构造函数中访问您的导入。使用 [Import],您可以在 IPartImportsSatisfiedNotification.OnImportsSatisfied() 保存您的导入

我会推荐[ImportingConstructor],顺便说一句,公共字段应该是私有的:)

于 2012-01-27T06:55:10.370 回答