MEF: MSDN 杂志上的文章(2). 两种导入方式的比较. 属性或字段的导入 VS 构造函数的导入
http://msdn.microsoft.com/zh-cn/magazine/ee291628.aspx
导入有2种方式: (1)通过属性和字段导入
public class ViewFactory { [Import] public SalesOrderView OrderView { get; set; } }
(2)通过构造函数导入
public class ViewFactory
{
[ImportingConstructor]
public ViewFactory(SalesOrderView salesOrderView)
{
}
}
通过构造函数进行导入(通常称为构造函数注入),使用导入构造函数时,MEF 会假设所有参数都是导入,从而不必使用 import 特性.
通过构造函数而不是属性进行导入属于个人喜好问题,
但属性导入适用范围比较广,尤其是当存在并非由 MEF 实例化的部件时。
构造函数参数也不支持重新组合。
属性导入 Import 可以设置 RequiredCreationPolicy 但 ImportingConstructor 好像不行。
属性导入 Import 中,在构造函数好像访问不到 Import 的属性。这点很奇怪,好像是执行完构造函数后,才能访问Imort属性。