1
考慮以下情形集合中的類型:Automapper:忽略尚未建立
public class DestinationType1 { }
public class DestinationType2 { }
public class SourceType { }
public class SourceTypeA : SourceType { }
public class SourceTypeB : SourceType { }
我設置了這些映射:
Mapper.CreateMap<SourceType, DestinationType2>();
Mapper.CreateMap<SourceTypeB, DestinationType2>();
Mapper.CreateMap<SourceType, DestinationType1>();
Mapper.CreateMap<SourceTypeA, DestinationType1>();
然後嘗試映射以下:
var sourceTypes = new List<SourceType>{new SourceTypeA(), new SourceTypeB()};
var destinationType1s = Mapper.Map<List<DestinationType2>>(sourceTypes);
var destinationType2s = Mapper.Map<List<DestinationType1>>(sourceTypes);
我想達到的目的是爲了destinationType1s只有一個成員,從源列表SourceTypeA映射,一個nd destinationType2s只有一個從SourceTypeB映射的映射。但是,我得到的是兩個來源類型映射的列表中的兩個元素。
這是可以實現的某種程度上開箱即用,還是我需要寫我自己的價值解析器或類似?
這肯定是一個解決方案,但是「真正」的情況下,我有涉及更多的源和目標對象,所以我想要說一個列表有A,B和C類型映射到它,另一個D,E和F,那麼我將不得不創建另一個基類,A,B和C從D繼承, E,F我想。如果你能指定automapper應該跳過任何沒有顯式映射的類,那將是很好的。 –
好吧,你已經給它一個基類的映射,所以它確實有一個明確的映射列表中的所有內容。 – CoderDennis
你是正確的,我明白爲什麼我會在映射列表中獲得這兩個元素,而你的解決方案可能是我必須要做的。但是,如果有一種方法可以告訴automapper只映射爲該特定類設置映射的派生類型,那將會非常有用。 –