10
會發生什麼事,當我打電話Mapper.CreateMap與同一類型的多次?Automapper - CreateMap多次調用
是否重寫以前的地圖?如果是這樣,如果我嘗試創建已經創建的地圖,是否有可能會引發異常?
會發生什麼事,當我打電話Mapper.CreateMap與同一類型的多次?Automapper - CreateMap多次調用
是否重寫以前的地圖?如果是這樣,如果我嘗試創建已經創建的地圖,是否有可能會引發異常?
當幾次調用Mapper.CreateMap來獲取同一組源和目標時,根本沒有任何事情發生,因爲Mapper.CreateMap<TSource, TDestination>()
沒有爲映射配置設置任何擴展。 如果設置IMappingExpression的覆蓋這樣 Mapper.CreateMap<TSource, TDestination>().ConstructUsing(x=>new TDestination(x.SomeField))
, 比對,這個映射的配置將與新的替換。 關於你的問題的第二部分,我知道如何驗證地圖是否已經創建:
public TDestination Resolve<TSource, TDestination>(TSource source)
{
var mapped = Mapper.FindTypeMapFor(typeof(TSource), typeof(TDestination)); //this will give you a reference to existing mapping if it was created or NULL if not
if (mapped == null)
{
var expression = Mapper.CreateMap<TSource, TDestination>();
}
return Mapper.Map<TSource, TDestination>(source);
}
稍晚,但我相信它回答了這個問題。 – Euphoric 2011-07-15 05:26:31
是否有任何開銷一次又一次地調用它?讓我們說,如果它在一個類的構造函數? – Baahubali 2015-06-18 02:05:02
響應非常遲,但爲了其他人的閱讀益處,是的!目前,我正在盯着其中60%的CPU時間都花在打電話Mapper.CreateMap(擴展象上面的答案)業績報告 – Talonj 2016-10-19 18:00:34