我经常使用 AutoMapper 将模型(域)对象映射到 ViewModel 对象,然后以模型/视图/视图模型模式由我的视图使用。
这涉及许多“Mapper.CreateMap”语句,它们都必须执行,但在应用程序的生命周期中只能执行一次。
那么,从技术上讲,我应该将它们全部保存在某个静态方法中,该方法从我的 Application_Start() 方法(这是一个 ASP.NET MVC 应用程序)中调用。
但是,将许多不同的映射关注点集中在一个中心位置似乎是错误的。
特别是当映射代码变得复杂并涉及格式化和其他逻辑时。
有没有更好的方法来组织映射代码,使其保持接近它所关注的 ViewModel?
(我想出了一个想法——在每个 ViewModel 上都有一个“CreateMappings”方法,在 BaseViewModel 中,在实例化时调用此方法。但是,由于该方法只能在应用程序生命周期中调用一次,因此需要一些额外的逻辑来缓存已调用 CreateMappings 方法的 ViewModel 类型列表,然后仅在必要时为不在该列表中的 ViewModel 调用它。)