我正在尝试使用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类在其构造函数中都有一个参数,那该怎么办呢?
答案 0 :(得分:0)
只要Product
类具有ImportingConstructor
装饰所述构造函数,当实际实例化类时(当您访问惰性对象的{{1}时),MEF将负责满足这些导入。所以你没什么可担心的。