2010-11-19 17 views
7

Salut J'utilise AutoMapper pour passer d'un modèle à un Dto et il fonctionne très bien. Dans un TypeConverter je dois injecter une interface (un service) qui doit être utilisé par le convertisseur de type pour effectuer la conversion.AutoMapper TypeConverter constructeur personnalisé

Comment puis-je arriver en AutoMapper?

+0

Quelle trousse d'injection utilisez-vous Dépendance? – BeRecursive

Répondre

12

Pouvez-vous pas seulement créer un constructeur de votre classe TypeConverter, en acceptant le service? Plutôt que d'utiliser le ConvertUsing générique, passer dans une nouvelle instance de votre TypeConverter construit avec le service ...

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

Utilisation:

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

Oh oui, je ne savais pas que je peux le faire. J'utilisais l'autre méthode ConvertUsing () – Raffaeu

+2

Si le service que vous avez besoin est 'IMapper' alors le' ResolutionContext context' facilement disponible dans la méthode 'ITypeConverter <>. Convert()' fournit le cartographe en cours. –

+0

super commentaire Chris Walsh homie –