2010-11-19 13 views
7

Ciao Sto utilizzando AutoMapper per passare da un modello a un Dto e funziona perfettamente. In uno TypeConverter ho bisogno di iniettare un'interfaccia (un servizio) che deve essere usata dal convertitore di tipi per fare la conversione.AutoMapper TypeConverter costruttore personalizzato

Come posso eseguire questo in AutoMapper?

+0

Quale pacchetto dependency injection stai usando? – BeRecursive

risposta

12

Non puoi semplicemente creare un costruttore sulla tua classe TypeConverter, accettando il servizio? Invece di utilizzare il generico ConvertUsing, passare in una nuova istanza del vostro TypeConverter costruito con il servizio ...

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

Usage:

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

Oh sì, non sapevo di poterlo fare. Stavo usando l'altro metodo ConvertUsing () – Raffaeu

+2

Se il servizio richiesto è 'IMapper', il prontamente disponibile' ResolutionContext context' nel metodo 'ITypeConverter <>. Convert()' fornisce il mapper corrente. –

+0

ottimo commento Chris Walsh homie –

Problemi correlati