0

我在一个基于 .NET MVC3 的项目的模块中有超过 8 页。我有一个控制器来处理所有页面。当我从视图中获取值时,我必须转换为本地模型来执行业务层中的逻辑。要从 转换模型ViewModel,我使用的是 Auto Mapper。是否有可能将 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.
}
4

1 回答 1

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);
}
于 2012-07-19T11:27:44.377 回答