c# – 在没有静态API的应用程序启动时配置AutoMapper v4.2
发布时间:2020-12-15 17:14:53 所属栏目:百科 来源:网络整理
导读:我试图从旧的静态AutoMapper API迁移到按照 this resource的新方式. 但是,我对如何在Startup.cs / Global.asax等文件中配置AutoMapper感到困惑. 做这样的事情的旧方法是: Mapper.Initialize(cfg = { cfg.CreateMapSource,Dest();}); 然后在整个代码中的任何
我试图从旧的静态AutoMapper API迁移到按照
this resource的新方式.
但是,我对如何在Startup.cs / Global.asax等文件中配置AutoMapper感到困惑. 做这样的事情的旧方法是: Mapper.Initialize(cfg => { cfg.CreateMap<Source,Dest>(); }); 然后在整个代码中的任何地方,我可以简单地做: var dest = Mapper.Map<Source,Dest>(source); 现在有了新版本,似乎无法在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); 我现在在MVC控制器或我的应用程序中的任何其他地方使用它时,是否真的必须配置AutoMapper?是的,文档向您展示了如何以新方式配置它,但它们只是将其设置为一个名为config的变量,它无法在我的整个应用程序中运行. 我发现了this documentation保持静态的感觉.但是我对MyApplication.Mapper是什么以及我应该在哪里声明它感到有点困惑.它似乎是一个全局应用程序属性. 解决方法
你可以这样做.
1.)创建一个具有MapperConfiguration类型属性的静态类 public static class AutoMapperConfig { public static MapperConfiguration MapperConfiguration; public static void RegisterMappings() { MapperConfiguration = new MapperConfiguration(cfg => { cfg.CreateMap<Source,Dest>().ReverseMap(); }); } } 2.)在Global.asax的Application_Start中,调用RegisterMapping方法 AutoMapperConfig.RegisterMappings(); 3.)在控制器中,创建映射器. IMapper Mapper = AutoMapperConfig.MapperConfiguration.CreateMapper(); Mapper.Map<Dest>(source); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |