我在我的MVVM應用程序中有相當多的parent-detail ViewModels。事情是這樣的:MVVM和StructureMap使用
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: locating other ViewModels
編輯:我已經打開了這個賞金,因爲我想更多的意見。
但我恐怕這太複雜了......最好有一個教育工廠結合所有的工廠。 – alex2k8 2009-07-23 13:16:42