2013-06-04 5 views
3

AutoMapper가 이미 구현 한 기능을 잃지 않고 AutoMapper가 내 유형을 변환하는 방식을 사용자 정의하고 싶습니다.AutoMapper의 기본 동작을 확장하십시오.

사용자 지정 ITypeConverter 인스턴스를 만들 수 있지만 기본 동작을 호출하는 방법을 볼 수 없습니다.

Mapper.CreateMap<MyDomainObject, MyDto> 
     .ConvertUsing<MyTypeConverter>(); 

...

public class MyTypeConverter : TypeConverter<MyDomainObject, MyDto> 
{ 
    public MyDto ConvertCore(MyDomainObject source) 
    { 
     var result = // Do the default mapping. 

     // do my custom logic 

     return result 
    } 
} 

나는 무한 루프로 가져 var result = Mapper.Map<MyDto>(source)를 호출하려고하면. AutoMapper는 TypeConverter가 정의되지 않았다고 가정 할 때 모든 것을 자동으로 수행하기를 원합니다.

도움을 주시면 감사하겠습니다.

답변

1

대상 객체의 일부 값만 사용자 정의하려면 Custom Value Resolver을 사용하는 것이 좋습니다. TypeConverters는 전체 변환을 처리하도록 설계되었습니다.

위에 나열된 문서 페이지는 당신이 처음 사용하기에 충분한 것입니다 : 당신이 CustomResolver을 구현 한 때이 같은 적용을하고, AutoMapper은 다른 속성에 대한 기본 매핑 할 것입니다 :

Mapper.CreateMap<MyDomainObject, MyDto>() 
    .ForMember(dest => dest.TargetProperty, 
       opt => opt.ResolveUsing<CustomResolver>()); 
관련 문제