在使用PRISM和Enterprise Library进行大量CRUD操作的LOB桌面应用程序时,我注意到一个看似烦人的重复模式.对于每个域模型实体(例如Contact),我发现我用视图模型(例如ContactVM)自我包装然后我引入一个新的ContactsVM(注意's'),后一个类接受用于填充的存储库接口一个ObservableCollection<ContactVM>和每一个Contact我从存储库中读取的实体,我把它包在ContactVM我通过构造通过实体与我的视图模型所需的其他企业图书馆服务一起.
问题是我的所有视图模型构造函数都开始采用这样的模式:
ViewModel(EntityToWrap e, DependencyFromEntLib, OtherDependencies ...)
现在这是一个问题,因为大多数工具和库需要默认的无参数构造函数(例如,某些商业数据网格需要提供过滤支持),而且您不能使用设计数据来实现实体可视化,因为它们也需要无参数构造函数.最后一个问题:构建视图模型的正确方法是什么?应该通过构造函数还是通过ServiceLocator提供Entlib服务?