AutoMapper TypeConverter自定义构造函数

Raf*_*aeu 7 dependency-injection automapper

嗨,我正在使用AutoMapper从模型转移到Dto,它运行良好.在一个TypeConverter我需要注入一个必须由类型转换器使用的接口(服务),以进行转换.

如何在AutoMapper中完成此操作?

Per*_* P. 12

你能不能只在你的TypeConverter班级上创建一个构造函数,接受服务?而不是使用泛型ConvertUsing,传递您TypeConverter使用服务构建的新实例...

    public class MyTypeConverter : TypeConverter<String, String>
    {
        public MyTypeConverter(IMyService service)
        {
            MyService = service;
        }

        public IMyService MyService { get; set; }

        protected override string  ConvertCore(string source)
        {
            //use service
        }
     }
Run Code Online (Sandbox Code Playgroud)

用法:

     Mapper.CreateMap<string, string>()
                     .ConvertUsing(new MyTypeConverter(_myService));
Run Code Online (Sandbox Code Playgroud)

  • 如果您需要的服务是`IMapper`,则`ITypeConverter <>中的现成`ResolutionContext context`.Convert()`方法提供当前的映射器. (3认同)