现在,AutoMapper正在废除静态API和在运行时更改映射的能力,但是在没有IoC管理器的情况下,我的WebForms应用程序出现了问题。
为了这个问题采取给定的我不能在这个应用程序中引入IoC管理器,虽然这样做会很好。"该应用程序在没有它的情况下已经工作了很多年,而且目前无法正常完成。未来可能,但不是现在。
使用AutoMapper之前我曾经做过的事情是在我实例化的每个类中有一个方法,它由构造函数自动调用。在那种方法中,我将有必要:
Mapper.CreateMap<>()
呼叫。这具有以下优点:
我很高兴能够以这种方式处理每个请求的性能,而不是在Application_Start()中执行此操作。
然而,使用AutoMapper 5 ...阅读migrating from the static API后,我现在必须:
如果我的假设在1.&amp; 2.以上是正确的我现在有一大堆紧密耦合的意大利面条代码。
所以我的问题是:
如何在解决方案中使用大量项目(因此包含多种类型)的Webforms应用程序中使用AutoMapper 5,而不优雅地使用IoC?
答案 0 :(得分:5)
AutoMapper并没有取消静态API。只是随意修改配置的部分。事实证明,允许Mapper.CreateMap随时迫使我进行映射。
那个我忘了删除的wiki页面。这是实际指导:
https://github.com/AutoMapper/AutoMapper/wiki/Static-and-Instance-API
5.0升级指南:
https://github.com/AutoMapper/AutoMapper/wiki/5.0-Upgrade-Guide
整个故事是&#34;摆脱遍布各处的Mapper.CreateMap调用并将它们置于初始化状态&#34;。您可以使用配置文件来帮助您。
但Mapper.CreateMap遍布整个应用程序总是危险的。这意味着您无法使用Mapper.AssertConfigurationIsValid,这是非常危险的跳过。如果您无法断言配置验证,则不应使用AutoMapper。