我经常使用AutoMapper将模型(域)对象映射到ViewModel对象,ViewModel对象然后被我的视图在模型/视图/视图模型模式中使用。'CreateMap'语句应该去哪里?
这涉及许多'Mapper.CreateMap'语句,所有这些语句都必须执行,但只能在应用程序的生命周期中执行一次。从技术上讲,我应该把它们全部放在某个地方的静态方法中,这个方法从我的Application_Start()方法(这是一个ASP.NET MVC应用程序)中调用。
但是,在一个中心位置将许多不同的映射关系组合在一起似乎是错误的。
特别是当映射代码变得复杂并涉及格式化和其他逻辑时。
是否有更好的方法来组织映射代码,以便它保持接近它所关注的ViewModel?
(我想出了一个主意 - 有每个视图模型一个“CreateMappings”的方法,并在BaseViewModel,呼吁实例这种方法。然而,由于该方法只应调用一旦在应用程序生命周期。它需要一些额外的逻辑来缓存已经调用了CreateMappings方法的ViewModel类型列表,然后仅在必要时调用它,以便不在该列表中的ViewModel。)
但仍然没有解决具有混为一谈所有不同的视图模型的所有映射的问题,当我宁愿有他们以某种方式与他们适用的课程有关。 – Jonathan 2010-05-24 00:36:32