当使用MEF和Prism v4时,做[Import]
的推荐方法是什么?这两个调用之间有什么区别(如果有的话)?
选项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
}
}
这些之间有什么区别?推荐哪个?
答案 0 :(得分:2)
这是一个风格问题,但我在ImportingConstructor
上比Import
更忠实于领域。 ImportingConstructor
允许您定义一个既可以使用也可以不使用MEF的对象。合同清晰,程序员很好理解。
另一方面,使用Import
可以让您的课程在MEF中更加实用。开发人员习惯于将对象的依赖关系提供给构造函数,而不是查看对象的所有属性,并确定在构造之后需要设置哪些属性。
答案 1 :(得分:2)
使用[ImportingConstructor],您可以在构造函数中访问导入。使用[导入],您可以在IPartImportsSatisfiedNotification.OnImportsSatisfied()
保存访问您的导入我建议[ImportingConstructor]并且公共字段应该是私有的:)