2014-02-20 144 views
0

我需要使用自動映射從源類映射到目標基類。使用自動映射器映射到基類

我的場景如下。

class Source 
{ 
    string FirstID { get; set; } 
    string SecondID { get; set; } 
} 

而且我的目標是如下

class DestinationBase 
{ 
    string ID { get; set; } 
} 

class DestinationObject : DestinationBase 
{ 
    string Prop { get; set; } 
} 

當我使用automapper與

Mapper.CreateMap<Source, DestinationObject>() 
     .ForMember(d => d.ID, s => s.MapFrom(s.FirstID)) 
     .ForMember(d => d.ID, s => s.MapFrom(s.SecondID)) 

其中一個ID映射後,無法正常工作。請任何想法爲什麼?我試過包括但我想我不明白它的使用不夠好。

+0

這是您在項目中的實際代碼嗎?該地圖用於「Destination」,但您已顯示「DestinationObject」和「DestinationBase」。另外'Map'是大寫字母,需要參數;我不認爲有一種叫ForMembers的方法。 –

+0

這不是我的代碼庫中的代碼,而是我正在使用的場景。我現在編輯它。謝謝 – damola

回答

0

您正在指定目標對象中的ID字段兩次,因此ID將是來自s.SecondId的值。
你想用目標對象中的FirstID和SecondId來完成什麼?

+0

感謝relply源對象是一個平坦的結構,而目標對象是更多的oop。基類用作身份自定義數據類型的一種手段,id是內容。我試圖在nom.automapper條款中獲得一個unquie對象foreach id。 – damola

+0

我不知道從單一來源映射到多個目的地的方法。 (這可能是可能的,但我不知道如何或找到任何示例)。如果這是一次性情況並且源對象只有幾個需要映射的ID,那麼推出自己的應用可能會更容易。 – fbranicky