2011-08-07 12 views
2

私のクラスの中で私はこのようなタイプをインポートするクラスがあります。MEF:タイプの新しいインスタンスを取得する方法

[Import] 
public ContactViewModel ContactViewModel { get; set; } 

タイプは、次のように定義されています。私は取得するには、プロパティから読んでいましたび

[PartCreationPolicy(CreationPolicy.NonShared)] 
[Export(typeof(ContactViewModel))] 
public class ContactViewModel {} 

私は期待していますが新しいインスタンスの権利ですか? または、私は同じインスタンスを取得し続けます。プロパティを使用するときに、私に新しいインスタンスを作成させるにはどうすればよいですか?あなたが代わりにして、あなたの財産としてそれを使用する工場と輸出を作成する必要があります

多くのおかげで、

答えて

4

コンシューマークラスを再構成してもよろしいですか? NonShared作成ポリシーを使用すると、作成するたびに新しいインスタンスが作成されるので、その部分の反対側([Import])の部分を確認します。そのクラスは正しく再構成されていますか?

あなたの他のオプションはExportFactoryを使用することで、例えば:

[Import] public ExportFactory<ContactViewModel> ViewModelFactory { get; set; } 
+0

おかげマットは、ノー上記財産を所有しているクラスは、したがって、それは再構成すべきではない、コントローラ(共有)クラスです。私は工場が解決策だと思う。私はそれを試してみましょう。 – Houman

+0

ありがとうございます。できます!これは、_container.Resolveを実行するときのUnityのようです。();正しい? – Houman

1

。 MEFパート作成ポリシーは、MEFが依存関係にアクセスするときに依存関係を持たないオブジェクトを構築するときに適用されます。

関連する問題