AutoMapper가 우리의 뷰 모델에서 모든 DateTime 속성을 지역화 할 수 있도록 노력하고 있습니다. 우리 시스템의 모든 곳에서 UTC를 사용하고 UTC의 모든 것을 데이터베이스에 저장하지만,이를 사용자의 시간대로 자동 변환하여 표시 할 수 있습니다.AutoMapper와 함께 값 확인 프로그램을 전역 적으로 적용하십시오.
모든 옵션을 살펴본 후에 ValueResolver를 사용하여 해결했습니다.
public class LocalizedDateTimeFormatter : ValueResolver<DateTime, DateTime>
{
protected override DateTime ResolveCore(DateTime source)
{
// get company
return company.TimeZone.ConvertFromUtc(source);
}
}
나는과 같이 매핑을 설정하고 있습니다 : 여기에 해결의 요점입니다 모두가 잘 작동
Mapper.CreateMap<Entity, Model>()
.ForMember(dest => dest.Foo, opt => opt.ResolveUsing<LocalizedDateTimeFormatter>()
.FromMember(src => src.Foo));
이, 나는 그것으로 행복 해요. 그러나 이상적으로는 뷰 모델의 모든 DateTime 속성에 대해이 해석기를 기본적으로 사용하는 규칙이 필요합니다. 필자는 ViewTime 속성을 반영하여 DateTime을 선택하고 ForMember 및 FromMember의 과부하를 사용하여 속성 문자열 이름을 가져 왔지만 그 모양은 ... 못 생겼습니다. 또한 AutoMapper의 중첩 된 속성 이름 작성 논리를 복제하면 꽤 빨리 무너질 것입니다.
질문 : AutoMapper에 이와 같은 ValueResolver를 사용하도록하는 쉬운 방법이 있습니까? "원본의 DateTime 속성을 대상의 DateTime 속성에 매핑 할 때마다이 확인자를 사용"한다고 말하면됩니다.
AutoMapper의 테스트를 통해 살펴본 결과 제대로 작동하지 않습니다.
감사합니다.
이것은 큰 질문이며 일반적인 요구 사항입니다. 나는 Jimmy의 대답에 따라 구현하려는 행운이 없었다. 누구나 따라야 할 실례를 알고 있습니까? –