总体结构是我的 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的具体实现将创建正确的域模型实现。
在我看来,如果我想让DomainProject与其他项目无关,那么这可能是不可能的。
如果我将其作为IF / case语句,那么每当我添加另一个抽象模型的实现时,我都必须记住添加另一个IF。