2016-03-19 13 views
1

MEFを使用してファクトリパターンを実装しようとしています。 私がやっていることは、製品クラスのインターフェースを持っていて、具体的なクラスを具体的なクラスごとに異なるメタデータでエクスポートすることです。次のように私は怠け者のリストは、それに対応するメタデータとともに製品のインタフェースをロードされているファクトリクラスで 、:MEFパラメータ化されたコンストラクタを持つファクトリパターン

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

、関数を作成するには、私は与えられた一つの実施を返すために、製品の種類のもの上記のリストをフィルタリング

public IProduct CreateProduct(string type) 
     { 
      var productType = ProductTypes.FirstOrDefault(x => x.Metadata.Type == type); 
      return productType .Value; 
     } 

この時点まで、すべてのものが正常に動作します。ファクトリクラスによって返される具体的なProductクラスのそれぞれがそのコンストラクタ内にパラメータを持つ場合はどうなるか???

答えて

0

限りProductクラスは言ったコンストラクタを飾るImportingConstructorを持っているように、クラスは実際にインスタンス化されるとき(あなたが怠惰なオブジェクトのValueプロパティにアクセスするとき)MEFは、これらの輸入を満たすの世話をしますので、あなたは心配することは何もありません。

関連する問題