2012-01-02 21 views
0

私は、アプリケーションのプラグインにUnityContainerを挿入するためにMEFを使用しています。MEF - コンストラクタでインポートされたオブジェクトがnullです

各プラグインはパネルを保持します。

UnityコンテナをMEFでもパネルに転送したいと思います。

パネルのコンストラクタでUnityを使用する必要があります。

問題は、Unityが初期化されていないことです。

したがって、私はパネルを作成した後、プラグインでCompositionContainer.ComposeParts(パネル)を使用します。 問題は、パネルのコンストラクタでUnityを使いたいということです。

パネルコンストラクタのパラメータとしてUnityContainerまたはCompositionContainerを送信したくありません。

おかげ

+3

MEF(カタログの作成)の初期化方法と、インポート/エクスポート属性の使用方法について、いくつかのコードを投稿する必要があります。 –

答えて

3
あなたはので、私はちょうど仮定いくつかのコードを掲載しているいけない

あなたはそれをそのように行う場合:あなたはこのようにそれを行う場合

public class Bar 
{ 
    [ImportingConstructor] 
    public Bar(IMyImportedService service) 
    { 
     //service should not be null 
    } 
} 

public class Bar 
{ 
    [Import] 
    private IMyImportedService service; 

    public Bar() 
    { 
     //service should be null, because you have to implement IPartImportsSatisfiedNotificationand use OnImportsSatisfied 
    } 
} 
関連する問題