2012-03-06 3 views
2

静的特性を有するMEF組成物を使用することは可能であるか?静的特性を有する組成物のMEF

私は通常、やっていることは

MyClass obj = new MyClass(); 
MEFHelper.Compose(obj); 

public class MEFHelper 
{ 
    //.... 
    public static void Compose(object o) 
    { 
     var batch = new CompositionBatch(); 
     batch.AddPart(o); 
     _container.Compose(batch); 
    } 
} 

である。しかし、これはインスタンスオブジェクトでのみ動作します。 提案がありますか?

あなたは

+0

なぜシングルトンアプローチを試してみませんか?輸出工場ですか? –

+0

シングルトンは依存性注入の対立です。 –

答えて

5

私は、静的プロパティの代わりに、インスタンスのプロパティを使用するためにあなたの必要性を疑問視でしょうありがとうございます。コンテナはインスタンスを自動的に破棄するように設計されています。静的なプロパティを使用しているときには実行できません。これらのプロパティの存続期間と使用方法は不確定です。

あなたが本当に静的プロパティを構成したい場合、あなたはおそらく例えば、プロパティ自体の輸入を満足させる必要があります:

public static class SomeStaticClass 
{ 
    public static SomeObject Instance { get; private set; } 
} 

SomeStaticClass.Instance = container.GetExportedValue<SomeObject>(); 

または

SomeStaticClass.Instance = new SomeObject(); 
container.SatisfyImportsOnce(SomeStaticClass.Instance); 

現実的にかかわらず、静的型の代わりにインスタンス型として実装できるかどうかを確認するために、静的型の設計に取り組んでいます。

+0

すばらしい答え!私は自分自身でそれをもっと良く言ったことはありませんでした。 –

関連する問題