2010-11-19 27 views
7

Hola, estoy usando AutoMapper para pasar de un modelo a un Dto y está funcionando muy bien. En un TypeConverter necesito inyectar una interfaz (un servicio) que el convertidor de tipo debe usar para realizar la conversión.AutoMapper TypeConverter constructor personalizado

¿Cómo puedo lograr esto en AutoMapper?

+0

Qué paquete inyección de dependencias está usando? – BeRecursive

Respuesta

12

¿No puede simplemente crear un constructor en su clase TypeConverter, aceptando el servicio? En lugar de utilizar el genérico ConvertUsing, pase en una nueva instancia de su TypeConverter construida con el servicio ...

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

Uso:

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

Oh, sí, no sabía que podía hacer eso. Estaba usando el otro método ConvertUsing () – Raffaeu

+2

Si el servicio que necesita es 'IMapper', entonces el' ResolutionContext context' disponible en el método 'ITypeConverter <>. Convert()' proporciona el asignador actual. –

+0

buen comentario Chris Walsh homie –

Cuestiones relacionadas