3

我想自定义 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 的事情。

非常感谢任何帮助。

4

1 回答 1

1

如果您只想自定义目标对象的某些值,那么最好使用自定义值解析器- TypeConverters 旨在处理整个转换。

上面列出的文档页面足以让您入门:当您实现 CustomResolver 后,您可以像这样应用它,AutoMapper 将为其他属性执行默认映射:

Mapper.CreateMap<MyDomainObject, MyDto>()
    .ForMember(dest => dest.TargetProperty, 
               opt => opt.ResolveUsing<CustomResolver>());
于 2013-06-04T21:55:24.507 回答