带参数化构造函数的MEF工厂模式

时间:2016-03-19 16:22:05

标签: c# constructor mef factory lazy-initialization

我正在尝试使用MEF实现工厂模式。 我正在做的是拥有产品类的接口,并使用每个具体类中不同的元数据导出具体类。 在Factory类中,我有一个Lazy加载的产品接口列表及其相应的元数据,如下所示:

 [ImportMany("Product")]
 public List<Lazy<IProduct, IProductMetaData>> ProductTypes;

然后在create function中我过滤上述产品类型列表,将作为参数给出的一个实现返回给create函数:

public IProduct CreateProduct(string type)
       {
           var productType = ProductTypes.FirstOrDefault(x => x.Metadata.Type == type);
           return productType .Value;   
       }
到目前为止,每件事情都很好。但是,如果工厂类返回的每个具体Product类在其构造函数中都有一个参数,那该怎么办呢?

1 个答案:

答案 0 :(得分:0)

只要Product类具有ImportingConstructor装饰所述构造函数,当实际实例化类时(当您访问惰性对象的{{1}时),MEF将负责满足这些导入。所以你没什么可担心的。