2010-11-19 144 views
7

您好我正在使用AutoMapper从模型移动到Dto,它的工作很好。 在一个TypeConverter我需要注入一个接口(一个服务),必须由类型转换器使用,以进行转换。AutoMapper TypeConverter自定义构造函数

如何在AutoMapper中完成此操作?

+0

其中扶养注射包您使用? – BeRecursive 2010-11-19 16:55:35

回答

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 
     } 
    } 

用法:

 Mapper.CreateMap<string, string>() 
        .ConvertUsing(new MyTypeConverter(_myService)); 
+0

哦,是的,我不知道我能做到这一点。我正在使用其他方法ConvertUsing () – Raffaeu 2010-11-19 17:13:42

+2

如果您需要的服务是'IMapper',那么'ITypeConverter <>。Convert()'方法中的现成'ResolutionContext上下文'提供当前映射器。 – 2016-05-11 17:30:45

+0

伟大的评论克里斯沃尔什亲密 – 2018-02-08 21:37:39