4

プロパティのインポートが満たされるのはいつですか? コンストラクターが実行される前にプロパティが初期化されるため、コンストラクターの前にそれらが満たされると思っていましたが、次の例はImportedClassコンストラクターで null であることを示しています。

ImportingConstuctor を使用してこれを解決できることはわかっています。これは、プロパティのインポートがいつ満たされるかを理解するためです。

public MyClass
{
  [Import]
  public ImportedClass ImportedClass {get;set;}

  public MyClass()
  {
      //Imported Class is null at this point, so nothing can be done with it here.
  }
}
4

1 に答える 1

7

コンストラクターが呼び出される前にオブジェクトを操作することはできません。ただし、MEF はIPartImportsSatisfiedNotificationというインターフェイスを使用して、問題の解決策を提供します。

public MyClass : IPartImportsSatisfiedNotification
{
  [Import]
  public ImportedClass ImportedClass {get;set;}

  public MyClass()
  {
      //Imported Class is null at this point, so nothing can be done with it here.
  }

  public void OnImportsSatisfied() 
  {
     //ImportedClass is set at this point.
  }
}

インポートを設定するために MEF が実行するアクションについて。最初にコンストラクターを呼び出し、次にプロパティを設定してから、通知メソッドを呼び出します。

于 2013-08-13T12:00:28.517 に答える