AutoMapper:将null源对象映射为decimal

时间:2015-08-04 15:03:05

标签: c# .net automapper

我需要将PriceValue类型的对象映射到十进制值,并且我配置了以下映射:

src

问题是当nulldefault(decimal)时抛出异常。

配置映射的最佳方法是什么,以便返回git diff abc123

2 个答案:

答案 0 :(得分:4)

在C#6中,这非常简单:

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

使用ConvertUsing,您可以完全覆盖所有映射配置,因此没有其他选项可供您使用。

答案 1 :(得分:0)

我们正在使用类似于PriceValue的类系统,它包含int,long等。我们能够为我们的基类创建一个通用映射。这将是设置:

public class PriceValue : ValueDecimal
{
    public decimal Value { get; set; }
    ...
}
然后

映射变为:

Mapper.CreateMap<ValueDecimal, decimal>().ConvertUsing(f => f != null ? f.Value : default(decimal));

如果您使用此方法(具有基类),则可以避免为您创建的每个新类设置映射。