编写自动映射的通用函数

时间:2012-07-19 11:03:39

标签: c# generics automapper

我在基于.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.
}

1 个答案:

答案 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);
}