我在基于.NET MVC3的项目的模块中有超过8页。我有一个控制器来处理所有页面。当我从视图中获取值时,我必须转换为本地模型以在业务层中执行逻辑。要从ViewModel
转换模型,我正在使用自动映射器。是否有可能将Auto Mapper作为通用函数?
以下是我正在使用的代码:
Mapper.CreateMap<WorkLoadRatioViewModel, WorkLoadRatio>();
WorkLoadRatio _workloaddata = Mapper.Map<WorkLoadRatioViewModel, WorkLoadRatio>(_vmodel);
Mapper.CreateMap<LeadTimeDayDetailsViewModel, LeadTimeDayDetails>();
LeadTimeDayDetails _leadtimedata = Mapper.Map<LeadTimeDayDetailsViewModel,LeadTimeDayDetails>(_vmodel);
有没有办法让所有代码只是为了调用泛型函数?例如,
public static TModel ToModel<TModel>(TModel model,TViewModel viewmodel)
where TModel : class
{
//mapper function to return the TModel OBject.
}
答案 0 :(得分:6)
这是你要做的事情:
public TDest Map<TSource, TDest>(TSource viewModel)
{
Mapper.CreateMap<TSource, TDest>();
TDest result = Mapper.Map<TSource, TDest>(viewModel);
return result;
}
public ActionResult MyAction(WorkLoadRationViewModel viewModel)
{
WorkLoadRatio model = Map<WorkLoadRationViewModel, WorkLoadRatio>(viewModel);
}