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属性。

 

posted @ 2012-06-21 23:01  Ken-Cai  阅读(422)  评论(0编辑  收藏  举报