使用BaseViewModel并继承Model的ViewModel

时间:2015-07-16 10:25:04

标签: c# inheritance design-patterns architecture

我有n层应用程序(实体层 - 业务层 - Web层)。我喜欢使用ViewModels(在Web层中)将下拉列表等用于基本业务对象(实体层)到UI。为此,我在每个具有下拉列表或默认值的ViewModel中使用BaseViewModel(Web Layer),它允许我只调用方法来填充数据,非常有用。

现在我想找到一种智能方法来避免将所有实体层属性重新键入VM。

目前,这是我做的一个例子:

型号:

Class CustomObjectModel { 
public int id {get;set;} 
public string name {get;set;} 
public string description {get;set;} 
}

VM:

public Class CustomObjectViewModel : BaseViewModel { 
public int id {get;set;} 
public string name {get;set;} 
public string description {get;set;} 
public List<possibleNames> string  {get;set;} 
}

BaseVM:

public Class BaseViewModel{
public List<string> FillNames(){...}
public List<string> DefaultName(){...}
}

而且我不想将模型属性重新键入VM ...如何?

我可以使用继承:CustomObjectModel继承了BaseViewModel,然后CustomObjectViewModel继承了CustomObjectModel,但是从Entites项目中引用WEB实际上并不干净,这让我感到不舒服。

感谢帮助我: - )

1 个答案:

答案 0 :(得分:0)

您可以使用AutoMapper http://automapper.org/或类似ExpressionMapper http://www.codeproject.com/Tips/1009198/Expressmapper-The-New-NET-Mapper

之类的东西