我想自定义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)
,它会进入无限循环。假设没有定义TypeConverter,我实际上希望AutoMapper能够正常地执行所有操作。
非常感谢任何帮助。
答案 0 :(得分:1)
如果您只想在目标对象上自定义某些值,那么最好使用Custom Value Resolver - TypeConverters旨在处理整个转换。
上面列出的文档页面足以让您入门:当您实现CustomResolver时,您可以像这样应用它,AutoMapper将为其他属性执行默认映射:
Mapper.CreateMap<MyDomainObject, MyDto>()
.ForMember(dest => dest.TargetProperty,
opt => opt.ResolveUsing<CustomResolver>());