[英]AutoMapper: Map null source object to decimal
我需要將類型為PriceValue的對象映射為十進制值,並且配置了以下映射:
public class PriceValue
{
public decimal Value { get; set; }
...
}
...
Mapper.CreateMap<PriceValue, decimal>()
.ConvertUsing(src => src.Value);
問題是,當src
為null
,將引發異常。
最好的配置映射的方式是返回default(decimal)
?
在C#6中,這非常簡單:
Mapper.CreateMap<PriceValue, decimal>()
.ConvertUsing(src => src?.Value ?? default(decimal));
使用ConvertUsing,您可以完全覆蓋所有映射配置,因此沒有其他選項可用。
我們正在使用類似的類系統,如PriceValue,其中包含int,long等。我們能夠針對基類創建通用映射。 這是設置:
public class PriceValue : ValueDecimal
{
public decimal Value { get; set; }
...
}
映射將變為:
Mapper.CreateMap<ValueDecimal, decimal>().ConvertUsing(f => f != null ? f.Value : default(decimal));
如果使用這種方法(具有基類),則可以避免為創建的每個新類設置映射。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.