我的 MVVM 应用程序中有大量父级详细信息 ViewModel。像这样的事情:
SchoolsViewModel
+- SchoolViewModel
+- LessonViewModel
+- PupilsViewModel
+- PupilViewModel
+- TeacherViewModel
+- PupilsViewModel
+- PupilViewModel
+- LessonsViewModel
+- TeachersViewModel
等等...
此外,单个视图模型可以出现在多个位置,具体取决于用户是按课程浏览还是按学生浏览等。
每个子视图模型都是由父视图模型创建的,因此许多视图模型需要传入子视图模型的依赖项。例如 SchoolsViewModel 的构造函数可能是:
SchoolsViewModel(ISchoolsRepository schoolsRepository,
ILessonsRepository lessonsRepository,
IPupilsRepository pupilsRepository,
ITeachersRepository teachersRepository,
...)
现在,使所有这些变得易于管理的常用方法是使用 DI 框架(例如 StructureMap)将所有必需的参数传递给视图模型。但是,因为在这种情况下,我的应用程序通常只会创建 SchoolsViewModel,因此用途有限。
我的第一个问题是,在这种情况下,您会让 SchoolsViewModel 将每个依赖项传递给每个子视图模型,还是让每个视图模型使用 ObjectFactory.GetInstance() 来创建子视图模型?也许通过工厂类来抽象出对 DI 框架的依赖?
还有一个与此相关的问题:MVVM:定位其他 ViewModel https://stackoverflow.com/questions/1136052/mvvm-locating-other-viewmodels
编辑:我已经对此开放了赏金,因为我想要更多的意见。