我經常使用AutoMapper將模型(域)對象映射到ViewModel對象,ViewModel對象然後被我的視圖在模型/視圖/視圖模型模式中使用。'CreateMap'語句應該去哪裏?
這涉及許多'Mapper.CreateMap'語句,所有這些語句都必須執行,但只能在應用程序的生命週期中執行一次。從技術上講,我應該把它們全部放在某個地方的靜態方法中,這個方法從我的Application_Start()方法(這是一個ASP.NET MVC應用程序)中調用。
但是,在一箇中心位置將許多不同的映射關係組合在一起似乎是錯誤的。
特別是當映射代碼變得複雜並涉及格式化和其他邏輯時。
是否有更好的方法來組織映射代碼,以便它保持接近它所關注的ViewModel?
(我想出了一個主意 - 有每個視圖模型一個「CreateMappings」的方法,並在BaseViewModel,呼籲實例這種方法。然而,由於該方法只應調用一旦在應用程序生命週期。它需要一些額外的邏輯來緩存已經調用了CreateMappings方法的ViewModel類型列表,然後僅在必要時調用它,以便不在該列表中的ViewModel。)
但仍然沒有解決具有混爲一談所有不同的視圖模型的所有映射的問題,當我寧願有他們以某種方式與他們適用的課程有關。 – Jonathan 2010-05-24 00:36:32