1

MEF と Prism v4 を使用する場合、[Import]s を実行するための推奨される方法は何ですか?また、これら 2 つの呼び出しの違いは何ですか?

オプション1:

public class TestClass
{
    [Import]
    private IRegionManager _RegionManager;

    public TestClass()
    {
        // stuff here
    }
}

オプション 2:

public class TestClass
{
    private IRegionManager _RegionManager;

    [ImportingConstructor]
    public TestClass(IRegionManger regionManager)
    {
        this._RegionManager = regionManager;
        // stuff here
    }
}

これらの違いは何ですか?どれがおすすめ?

4

2 に答える 2

2

[ImportingConstructor]を使用すると、コンストラクターでインポートにアクセスできます。[インポート]を使用すると、IPartImportsSatisfiedNotification.OnImportsSatisfied()でインポートに簡単にアクセスできます。

[ImportingConstructor]をお勧めしますが、パブリックフィールドはプライベートにする必要があります:)

于 2012-01-27T06:55:10.370 に答える
2

これはスタイルの問題ですが、私はフィールドImportingConstructorよりもはるかにファンです。Importを使用すると、MEFサポートのImportingConstructor有無にかかわらず使用できるオブジェクトを定義できます。契約は明確で、プログラマーにはよく理解されています。

一方、使用Importすると、クラスはMEFからはるかに使いやすくなります。開発者は、オブジェクトのすべてのプロパティを調べたり、構築後に設定する必要があるプロパティを決定したりするのではなく、オブジェクトの依存関係をコンストラクターに提供することに慣れています。

于 2012-01-26T16:48:09.167 に答える