Automapper Round所有十进制类型实例

问题描述 投票:0回答:1

我需要一种方法来为我的automapper配置添加舍入。我尝试过使用这里建议的IValueFormatter:Automapper Set Decimals to all be 2 decimals

但AutoMapper不再支持格式化程序。我不需要将其转换为其他类型,因此我不确定类型转换器是否也是最佳解决方案。

现在还有一个很好的自动播放器解决方案吗?

使用AutoMapper版本6.11

c# automapper automapper-6
1个回答
2
投票

这是一个完整的MCVE演示了如何配置decimaldecimal的映射。在这个例子中,我将所有十进制值四舍五入为两位数:

public class FooProfile : Profile
{
    public FooProfile()
    {
        CreateMap<decimal, decimal>().ConvertUsing(x=> Math.Round(x,2));
        CreateMap<Foo, Foo>();
    }
}

public class Foo
{
    public decimal X { get; set; }
}

在这里,我们演示它:

class Program
{
    static void Main(string[] args)
    {
        Mapper.Initialize(x=> x.AddProfile(new FooProfile()));

        var foo = new Foo() { X = 1234.4567M };
        var foo2 = Mapper.Map<Foo>(foo);
        Debug.WriteLine(foo2.X);
    }
}

预期产量:

1234.46

虽然Automapper确实知道如何将decimal映射到开箱即用的decimal,但我们可以覆盖其默认配置并告诉它如何映射它们以满足我们的需求。

© www.soinside.com 2019 - 2024. All rights reserved.