MVVM アプリケーションには、非常に多くの親詳細 ViewModel があります。このようなもの:
SchoolsViewModel
+- SchoolViewModel
+- LessonViewModel
+- PupilsViewModel
+- PupilViewModel
+- TeacherViewModel
+- PupilsViewModel
+- PupilViewModel
+- LessonsViewModel
+- TeachersViewModel
等々...
さらに、ユーザーがレッスン単位でブラウジングしているか生徒単位でブラウジングしているかなどに応じて、単一のビュー モデルが複数の場所に表示される場合があります。
各子ビュー モデルは親ビュー モデルによって作成されるため、ビュー モデルの多くは子ビュー モデルの依存関係を渡す必要があります。たとえば、SchoolsViewModel のコンストラクターは次のようになります。
SchoolsViewModel(ISchoolsRepository schoolsRepository,
ILessonsRepository lessonsRepository,
IPupilsRepository pupilsRepository,
ITeachersRepository teachersRepository,
...)
これらすべてを扱いやすくする通常の方法は、StructureMap などの DI フレームワークを使用して、必要なすべての引数をビュー モデルに渡すことです。ただし、この場合、私のアプリケーションは通常、SchoolsViewModel のみを作成するため、これは使用が制限されます。
私の最初の質問は、この場合、SchoolsViewModel が各依存関係を各子ビュー モデルに渡すようにするか、それとも各ビュー モデルが ObjectFactory.GetInstance() を使用して子ビュー モデルを作成するようにするかということです。おそらく、ファクトリ クラスを介して DI フレームワークへの依存関係を抽象化するのでしょうか?
これに関連する別の質問があります: MVVM: locating other ViewModels
編集:もっと意見が欲しいので、これについて報奨金を出しました。