2011-08-17 228 views
2

我想使用AutoMapper而不借助自定義映射。自動映射器Map.CreateMap沒有自定義映射的問題

我有兩個對象定義使用相同的接口

public class Order : IOrder 
... 

public class OrderViewModel : IOrder 
... 

我的Global.asax如下,看起來是這樣的:後來

protected void Application_Start() 
    { 
     Mapper.CreateMap<Order, OrderViewModel>(); 
     Mapper.CreateMap<OrderViewModel, Order>(); 

     Mapper.CreateMap<IOrder, OrderViewModel>(); 
     Mapper.CreateMap<OrderViewModel, IOrder>(); 

     Mapper.CreateMap<Order, IOrder>(); 
     Mapper.CreateMap<IOrder, Order>(); 

     Mapper.CreateMap<IOrder, IOrder>();   

     ... 
    } 

,當我嘗試使用此地圖,我得到一個對象,但它沒有任何內容。

OrderViewModel vm = new OrderViewModel(); 
vm.OrderName = "Test"; 

var dto = Mapper.Map<Order, OrderViewModel)(vm); 

dto.OrderName = empty string!?! 

更新:我使用的地圖這樣其實...很抱歉逆轉PARAMS。總之,仍然不起作用。

var dto = Mapper.Map<OrderViewModel, Order)(vm); 
+0

OrderViewModel和Order都有一個名爲OrderName的屬性嗎?另外,我認爲你應該只需要:Mapper.CreateMap (); – Paul

+0

是的,他們都有OrderName。該接口指定了一個OrderName,所以這兩個類實現了它。 – 010110110101

+0

你可以發佈實際的課程嗎? –

回答

0

的Mapper.Map簽名

Mapper.Map<TSource, TDestination> 

當你正試圖在這裏有從OrderViewModel創建一個訂單視圖模型是源和秩序爲目標,嘗試更換通用參數:

var dto = Mapper.Map<OrderViewModel, Order)(vm); 
+0

,如何創建IOrder實例對不起 - 這是一個type-o。我反其道而行。 – 010110110101