1

そのため、アプリケーションからサービスロケーターを削除する方法について説明を求めています。

どのビューがアクティブで、どのビューが開いているかを認識し、新しいビューを作成するViewManagerServiceがあります。

現在、私のViewModelは、コンストラクターインジェクションを介してIViewManagerServiceをインジェクトします。これらのViewModelは、呼び出されたときに呼び出しを行うことができるICommandを公開します。

viewManager.Transition("MyCoolView", somePrimaryKey);

次に、ViewManagerServiceはサービスロケーターを使用して、キー「MyCoolView」を使用して新しいビューを検索およびインスタンス化します。キー文字列を使用する理由は、ViewをViewModelsから切り離すことができるようにするためです。ViewManagerServiceを他のアプリで使用できるように十分に汎用性を維持したいので、特定のIAbstractFactoryインターフェイスに依存させたくありません。

ヒント/提案はありますか?

4

1 に答える 1

1

WPF のデータ テンプレートエンジンを使用すると、マジック ストリングを完全に取り除くことができます。そのための最善の方法は、MVVM パターンを使用することです。これは DI とは直交していますが、優れたイネーブラーです。

移行が完了すると、 Service Locator アンチパターンに依存することなく、純粋な DI アーキテクチャを持つことができます。

于 2010-08-03T08:07:49.570 に答える