在使用PRISM和Enterprise Library进行大量CRUD操作的LOB桌面应用程序中,我注意到似乎令人讨厌的重复模式。对于每个领域模型实体(例如联系人),我发现自己用视图模型(例如ContactVM)包装它,然后引入一个新的ContactsVM
(注意's')后一类接受存储库接口的地方,该接口用于填充ObservableCollection<ContactVM>
和我从存储库读取的每个Contact
实体,我将它包装在一个ContactVM
中,我通过构造函数将实体传递给ViewModel所需的其他企业库服务。查看模型和依赖注入
的问题是,我所有的视图模型构造开始采取这种模式是这样的:
ViewModel(EntityToWrap e, DependencyFromEntLib, OtherDependencies ...)
现在这是一个问题,因为大多数的工具和库需要一个默认的无参数的构造函数(例如,一些商业数据网格需要提供过滤支持),再加上你不能使用设计数据来可视化实体,因为它们也需要无参数的构造函数。最后是问题:构建视图模型的正确方法是什么?应该通过构造函数还是通过ServiceLocator来提供Entlib服务?
我会建议减少你使用解释你的问题和使用一些模拟类和方法的单词数。 – Nix
你有没有受保护的无参数构造函数? –
@Nix,一票赞成,我知道这个问题有点混乱,但我找不到一个合适的方式,否则,我会尝试下一次。 –