0

私は IoC を初めて使用し、それを適用する際のベスト プラクティスに従おうとしています。変更する必要があるオブジェクトの注入を受け入れる新しい EditViewModel を作成する場所から ListViewModel があります。

ソリューションは、このオブジェクトを含むメッセージを IoC コンテナーに送信し、それを EditViewModel に渡すことができると考えました。

私はそれを行うことができますか?もっと良い方法はありますか?

どうもありがとうございました!

4

1 に答える 1

1

ビュー モデルで他のビュー モデルを作成する場合は、ビュー モデル ファクトリを作成します。このビュー モデルファクトリListViewModelを依存関係として (たとえば、コンストラクター インジェクションを介して) 取得し、編集ビュー モデルを作成する場合は、次のようにします。

var editViewModel = this.EditViewModelFactory.Create(modelToEdit);

また

var editViewModel = this.EditViewModelFactory.Create();
editViewModel.SetModel(modelToEdit);

編集ビュー モデル ファクトリを IoC コンテナー経由で解決する必要があります。Castle Windsor や Ninject などのコンテナーでは、自動工場登録が可能です。この場合、ファクトリのインターフェイスを定義するだけで、コンテナは実際にこのインターフェイスを実装する型をインスタンス化します。

アプリケーションがメディエーターを介してコンテナーと通信することは確かに望ましくありません。

于 2012-08-25T15:06:40.940 に答える