AutoMapper 8.0构造使用重大更改

时间:2019-01-20 11:48:25

标签: c# automapper

我在代码中使用了AutoMapper,并且有一个用于初始化映射器的通用包装器。该代码运行了很长时间,没有任何问题。升级到AutoMapper 8后,我的自定义转换器将被忽略。负责设置转换器的代码如下:

new MapperConfiguration(cfg =>
   cfg.CreateMap(mySource, myTarget).ConstructUsing(myConverter);

这段代码不是使用AutoMapper 8生成的,因为我必须使用表达式。甚至提供了upgrade guid,但我无法使其再次运行。

我只是希望将其转换为

new MapperConfiguration(cfg =>
   cfg.CreateMap(mySource, myTarget).ConstructUsing(expr => myConverter);

但转换器将被忽略。

1 个答案:

答案 0 :(得分:2)

我通过将myConverter方法提取到一个继承自ITypeConverter的单独的类中,解决了类似的问题:

public class MyConverter : ITypeConverter<MySourceType, MyDestinationType>
{
    public MyDestinationType Convert(MySourceType source, MyDestinationType destination, ResolutionContext context)
    {
        // Conversion logic here
    }
}

然后可以使用以下内容替换映射配置:

cfg.CreateMap(mySource, myTarget).ConvertUsing<MyConverter>();

cfg.CreateMap<MySourceType, MyDestinationType>().ConvertUsing<MyConverter>();