2017-06-26 13 views
0

は、私はクラスCookie持っていると仮定します。このコードは、Cookie[Export]属性を持っていないので、明らかに動作しませんMEFで動的に作成されたオブジェクトを使用する方法は?

[Export] 
class CookieMonster: ICookieMonster 
{ 
    [Import] 
    ICookie cookie; 
} 

class Cookie 
{ 
    List<Ingredient> ingredients; 

    public Cookie(List<Ingredient> ingredients) 
    { 
     this.ingredients = ingredients;  
    } 
} 

CookieをMEFを使用していますCookieMonsterクラスで使用されています。問題は、実行時にCookieのインスタンスが作成され、そのインスタンスが必要であることです。

どうすればこの問題を解決できますか?

答えて

1

あなたのMEFの初期化にCompositionBatchを追加し、(どちらかnewから、または既存のインスタンスを使用)、このバッチにCookieオブジェクトのインスタンスを追加する場合は、あなたがそれを使用する必要があなたのCookieオブジェクトをインポートすることができます。この場合

var container = new CompositionContainer(aggregateCatalog); 
var batch = new CompositionBatch(); 
batch.AddExportedValue<ICookie>(new Cookie()); 

container.Compose(batch); 

あなたは、MEFによって作成されたクラスで[Import] Cookie myCookie;を行うことができるようになります。

現在、CookieオブジェクトにはICookieが実装されていません(正しくエクスポートされません)。ICookieをインポートすると何も表示されません。

関連する問題