2017-06-15 54 views
0

我有以下代碼:如何初始化Automapper當信號源類型爲未知

public static TDest Map2<TDest>(this object sourceObjInstance) where TDest : new() 
{ 
    var itemType = typeof(TDest); 
    var item = Activator.CreateInstance(itemType); 
    Mapper.Initialize((cfg => cfg.CreateMap<??????, TDest>()); 
    var result = Mapper.Map(sourceObjInstance, item, sourceObjInstance.GetType(), item.GetType()); 
    return (TDest)result; 
} 

所以,我不知道從哪裏得到爲mapper.initialize法源對象泛型參數(?????佔位符)。 WCF將自動生成sourceObjInstance類。

+0

1-您不應在每次映射時都進行初始化。在應用程序啓動時初始化並創建映射。然後在需要時映射。 2-總是知道你的地圖。爲每個需要映射到另一個類型的類型創建一個映射。 – Mik

回答

0

Automapper支持動態映射。如果在編譯時不知道源/目標類型,請設置CreateMissingTypeMaps配置屬性:

Mapper.Initialize(cfg => cfg.CreateMissingTypeMaps = true); 

object src = new Src(); 
object dest = new Dest(); 

Mapper.Map(src, dest);