C#如何为将来的接口实现强制执行mapper方法

时间:2017-10-26 10:58:43

标签: c# inheritance polymorphism domain-driven-design viewmodel

总体结构是我的 ViewModels,DomainModels,DatabaseModels 他们在每个项目中, ViewModels& DatabaseModels引用了Domain模型。但不是彼此,而DomainModels没有传出引用。 像这样(箭头是参考):

ViewModels => DomainModels <= DatabaseModels

示例类将是:

abstract ProductDomainModel
TvProductDomainModel : ProductDomainModel
BookProductDomainModel : ProductDomainModel

abstract ProductViewModel
TvProductViewModel : ProductViewModel
BookProductViewModel : ProductViewModel
(same for ProductDataModel)

随着时间的推移,我将添加大量其他实现,并希望避免记住在不同的映射器方法中添加功能/逻辑。

创建DomainModel非常简单,因为我可以调用ProductViewModel.CreateDomain();,我的ViewModel的具体实现将创建正确的域模型实现。

然而,我会在构建ViewModels和DatabaseModels时遇到问题而不在某些Mapper类中执行IF语句。

  1. 我更希望实现正常&#34;多态性&#34;允许域模型的实现以某种方式确定(无需外部检查)返回哪个ViewModel或DataModel。
  2. 在我看来,如果我想让DomainProject与其他项目无关,那么这可能是不可能的。

    1. 第二个优先级是强制执行某个类来实现一个接受DomainModel并返回ViewModel / DatabaseModel的正确实现的方法。
    2. 如果我将其作为IF / case语句,那么每当我添加另一个抽象模型的实现时,我都必须记住添加另一个IF。

0 个答案:

没有答案