2013-06-04 75 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>());