對於映射中特定類型的每個成員,我想使用我的特定自定義值解析器。客戶價值解析與全球automapper,但只爲特定的地圖?
我現在這樣做的方式是爲每個需要它的成員定義這個自定義值解析器。這是目前的代碼:
我只想指定這一個,對於一個特定的地圖,但對於我所有的谷歌搜索和搜索我找不到解決方案。有任何想法嗎?注意:對於所有的映射它不是全局的,只適用於特定的映射!
下面是當前的代碼:
Mapper.CreateMap<csp_CheckSLAForPeriodByHour_Result, CheckSlaItem>()
// make doubles into 0 instead of null
.ForMember(p => p.Avg_ms, opt => opt.ResolveUsing<DoubleValueOrZeroResolver>().FromMember(p => p.avg_ms))
.ForMember(p => p.Mdn_ms, opt => opt.ResolveUsing<DoubleValueOrZeroResolver>().FromMember(p => p.mdn_ms))
.ForMember(p => p.Sla_i_wefu, opt => opt.ResolveUsing<DoubleValueOrZeroResolver>().FromMember(p => p.sla_i_wefu))
.ForMember(p => p.Sla_iw_efu, opt => opt.ResolveUsing<DoubleValueOrZeroResolver>().FromMember(p => p.sla_iw_efu))
.ForMember(p => p.Std_ms, opt => opt.ResolveUsing<DoubleValueOrZeroResolver>().FromMember(p => p.std_ms))
// make ints into 0 instead of null
.ForMember(p => p.Min_ms, opt => opt.ResolveUsing<IntValueOrZeroResolver>().FromMember(p => p.min_ms))
.ForMember(p => p.Max_ms, opt => opt.ResolveUsing<IntValueOrZeroResolver>().FromMember(p => p.max_ms))
;
,我想簡單的東西如:
Mapper.CreateMap<csp_CheckSLAForPeriodByHour_Result, CheckSlaItem>()
.ForAllMembers().OfType(double?).ResolveUsing<DoubleValueOrZeroResolver>()
將是任何解決這個感謝!
Brgds Rickard Robin
您是否無法使目標屬性類型爲'double'(而不是'double?')。如果你這樣做,目標屬性將被初始化爲'0D',你不必擔心automapper。 –
是的,這可能是一個解決方案,但即使如此 - 在這種情況下,對於這個特定的地圖,我希望這種情況發生。我可以想象多種場景,其中一個需要類似的功能。那就是在一個特定的地圖上對所有成員使用某種類型的解析器。 – imbageek
你有沒有找到一個很好的解決方案呢?我現在正在處理同樣的問題。 –