我正在开发一个wpf应用程序,我的主视图模型ctor看起来像这样。如您所见,其他VM通过ctor注入注入。我需要这样做,因为填充主菜单需要所有的视图模型。
但这对我来说似乎不对。最初,由于应用程序很简单,我没有感觉到任何问题,但随着应用程序的增长,在我看来,ctor参数的数量正在增长,这是不对的。在我看来,违反了单一责任原则
public MultiControllerHomeViewModel
(
MultiControllerViewModel MCvm,
VigilantProcessListViewModel VPLvm,
MailSettingsViewModel MSvm,
DropboxSettingsViewModel DBSvm,
PushbulletSettingsViewModel PBSvm,
GeneralHelpViewModel GHvm,
LoginViewModel Lvm
)
{...}
有人可以建议我如何处理这个问题吗?
答案 0 :(得分:3)
您可以创建MainMenuViewModel
,其唯一的工作就是为主菜单提供数据。 MainMenuViewModel
将所有其他视图模型作为构造函数参数,但由于它不是任何其他视图模型,因此不会违反单一责任原则。
根据您的代码,MultiControllerHomeViewModel
可能必须将MainMenuViewModel
作为构造函数参数。