2017-12-19 1 views
0

내 자동 구성에 반올림을 추가하는 방법이 필요합니다. 여기에 제안 된대로 IValueFormatter를 사용해 보았습니다 : Automapper Set Decimals to all be 2 decimalsAutomapper 모든 Decimal Type 인스턴스 반올림

그러나 AutoMapper는 포맷터를 더 이상 지원하지 않습니다. 다른 형식으로 변환 할 필요가 없으므로 형식 변환기가 최상의 솔루션인지는 확실하지 않습니다.

이 문제에 대한 여전히 좋은 자동 해결 방법이 있습니까? AutoMapper 버전 6.11

+0

https://stackoverflow.com/questions/30137734/whats-the-alternative-to-ivalueformatter-in-automapper – Amy

+0

해당 솔루션의 문제점은 제가 모든 소수 유형 인스턴스를 찾아야한다는 것입니다. 나는 속성에 의해서가 아니라 십진법으로 이것을하고 싶다. –

+0

10 진수에서 10 진수로 맵을 작성하고 해당 포맷터를 적용하십시오. 당신은 어디에서나 그것을 할 필요가 없습니다. automapper에게 십진수를 십진수로 매핑하는 방법을 알려주십시오. – Amy

답변

2

를 사용

이것은 당신이 decimaldecimal의 매핑을 구성하는 방법을 보여주는 완벽한 MCVE입니다. 이 예에서는 내가이 개 자리에있는 모든 소수 값을 반올림 :

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을에 매핑하는 방법을 알고 있음을 기본으로 사용하여 기본 구성을 무시하고 필요에 맞게 매핑하는 방법을 알려줄 수 있습니다.