代码之家  ›  专栏  ›  技术社区  ›  StefanG

AutoMapper 8.0结构使用断裂变化

  •  1
  • StefanG  · 技术社区  · 5 年前

    我在代码中使用automapper,并且我有一个初始化映射器的通用包装器。代码运行很长时间没有任何问题。升级到automaper 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 回复  |  直到 5 年前
        1
  •  1
  •   Michael Armitage    5 年前

    我通过将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>();