Bla*_*ell 7 c# asp.net asp.net-mvc automapper
我正在尝试从旧的静态AutoMapper API迁移到根据此资源执行的新方法.
但是,我对如何在Startup.cs/Global.asax等文件中配置AutoMapper感到困惑.
做这样的事情的旧方法是:
Mapper.Initialize(cfg => {
cfg.CreateMap<Source, Dest>();
});
Run Code Online (Sandbox Code Playgroud)
然后在整个代码中的任何地方,我可以简单地做:
var dest = Mapper.Map<Source, Dest>(source);
Run Code Online (Sandbox Code Playgroud)
现在使用新版本似乎无法在Application Start上初始化AutoMapper,然后在Controller中使用它.我弄清楚如何做到这一点的唯一方法是在控制器中执行所有操作:
var config = new MapperConfiguration(cfg => {
cfg.CreateMap<Source, Dest>();
});
IMapper mapper = config.CreateMapper();
var source = new Source();
var dest = mapper.Map<Source, Dest>(source);
Run Code Online (Sandbox Code Playgroud)
我现在在MVC控制器或我的应用程序中的任何其他地方使用它时,是否真的必须配置AutoMapper?是的,文档向您展示了如何以新的方式配置它,但它们只是将其设置为一个名为config的变量,该变量无法在我的整个应用程序中运行.
我找到了关于保持静态感觉的文档.但是我对MyApplication.Mapper是什么以及我应该在哪里声明它感到有点困惑.它似乎是一个全局应用程序属性.
Pau*_*hal 11
你可以这样做.
1.)创建一个具有MapperConfiguration类型属性的静态类
public static class AutoMapperConfig
{
public static MapperConfiguration MapperConfiguration;
public static void RegisterMappings()
{
MapperConfiguration = new MapperConfiguration(cfg => {
cfg.CreateMap<Source, Dest>().ReverseMap();
});
}
}
Run Code Online (Sandbox Code Playgroud)
2.)在Global.asax的Application_Start中,调用RegisterMapping方法
AutoMapperConfig.RegisterMappings();
Run Code Online (Sandbox Code Playgroud)
3.)在控制器中,创建映射器.
IMapper Mapper = AutoMapperConfig.MapperConfiguration.CreateMapper();
Mapper.Map<Dest>(source);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5386 次 |
| 最近记录: |