查看模型和依赖注入在使用PRISM和EnterpriseLibrary进行大量CRUD操作的LOB桌面应用程序上工作时,我注意到一个重复出现的模式,这似乎很烦人。对于每个域模型实体(例如Contact),我发现我用视图模型(例如ContactVM)包裹自己,然后引入一个新的ContactsVM(注意“s”),其中后者接受存储库接口,即用于填充ObservableCollection,对于我从存储库中读取的每个Contact实体,我将其包装在ContactVM中,我将该实体与我的ViewModel需要的其他企业库服务一起传递给构造函数。问题是我所有的视图模型构造函数都开始遵循以下模式:ViewModel(EntityToWrape,DependencyFromEntLib,OtherDependencies...)现在这是一个问题,因为大多数工具和库都需要默认的无参数构造函数(例如,一些商业数据网格需要过滤支持),并且您不能将设计数据用于实体可视化,因为它们还需要无参数构造函数。最后一个问题:构建视图模型的正确方法是什么?Entlib服务应该通过构造函数还是通过ServiceLocator提供?以下是解决该问题的许多不同方法之一。我更喜欢更轻量级的视图模型。然后我添加一个类,它的职责是从一个或多个源(如存储库)组成视图模型。这并没有消除级联依赖的问题,但它确实释放了视图模型构造函数。它还保留了控制器外部的逻辑,并允许重用视图模型(当然,在适当的时候)。在我看来,这也提供了更好的抽象级别。仅仅因为视图模型通常看起来像特定的域模型,并不意味着它总是如此。最终结果:以上为C#学习教程:查看模型和依赖注入分享的所有内容。如果对您有用,需要进一步了解C#学习教程,希望您多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
