簡體   English   中英

AutoMapper:將空源對象映射到十進制

[英]AutoMapper: Map null source object to decimal

我需要將類型為PriceValue的對象映射為十進制值,並且配置了以下映射:

public class PriceValue
{
    public decimal Value { get; set; }
    ...
}

...

Mapper.CreateMap<PriceValue, decimal>()
    .ConvertUsing(src => src.Value);

問題是,當srcnull ,將引發異常。

最好的配置映射的方式是返回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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM