データ/ Webサービスで、複数のビューモデルが優先的な「MVVM方法」にアクセスする必要がある場合は、MVVMのビュー間での共有データサービス - グローバルまたはコンストラクタインジェクション?
私はグローバルな静的サービスを持っていますか、私のサービスのインスタンスをすべてのビューモデルに渡しますか?私は個人的には、あるアプローチの利点を他のものよりも見ることができません。
データ/ Webサービスで、複数のビューモデルが優先的な「MVVM方法」にアクセスする必要がある場合は、MVVMのビュー間での共有データサービス - グローバルまたはコンストラクタインジェクション?
私はグローバルな静的サービスを持っていますか、私のサービスのインスタンスをすべてのビューモデルに渡しますか?私は個人的には、あるアプローチの利点を他のものよりも見ることができません。
サービスのインターフェイスバージョンを渡すことで、クラスの単体テストを簡単に行うことができます。グローバルな静的状態では、これはクリーンでも簡単でもありません。
クラスをインタフェースにすることは、クラスのコントラクトも定義します。基本的には、「ClassAは、IServiceAとIServiceBが正しく機能することを要求しています。グローバルな静的状態では、そのような契約はありません。
依存性注入を使用することに加えて、サービスのインスタンスを渡さないと各ViewModelがServiceLocatorを呼び出して実行時に登録されたサービスのインスタンスを取得するというServiceLocaterアプローチも検討してください。
ServiceLocatorは、私の意見では、ひどいです。これは、各シナリオに多数の特定のサービスロケータがない限り、UnityContainerをすべてのクラスに渡すようなものです。コンストラクタインジェクションを使用して実行できるクラスのためのコントラクトを壊します。 –
、私のおかげで理にかなっています。 – kbeal2k