2010-02-04 3 views
4

Nous utilisons l'injection de dépendance basée sur le constructeur, AutoMapper et Unity sur une base de code.Spécification d'un mappage de type Unity par défaut pour une paire générique d'interface et de classe

Nous avons enveloppé AutoMapper avec une interface générique ...

public interface IMapper<TSource, TDestination> 
{ 
    TDestination Map(TSource source); 
} 

Et une classe qui implémente cette interface ...

public class AutomaticMapper<TSource, TDestination> : IMapper<TSource, TDestination> 
{ 
    public TDestination Map(TSource source) 
    { 
     return AutoMapper.Mapper.Map<TSource, TDestination>(source); 
    } 
} 

Cela fonctionne bien, mais cela signifie que pour chaque mappage nous définissons dans la configuration AutoMapper que nous devons effectuer un UnityContainer.RegisterType supplémentaire.

Ces applications de type sont presque toujours de la forme

container.RegisterType<IMapper<ClassA, ClassB>, AutomaticMapper<ClassA, ClassB>>(); 

Est-il possible que l'on peut dire l'unité d'utiliser un mappage de type par défaut qui mappe IMapper-AutomaticMapper en utilisant la même TSource et TDestination pour chacun leur?

Répondre

9

Nous faisons pratiquement la même chose. Dans Unity, vous pouvez dire:

unityContainer.RegisterType(typeof(IMapper<,>), typeof(AutomaticMapper<,>)); 
1
public class AutomaticMapper : IMapper 
{ 
    public TDestination Map<TSource, TDestination>(TSource source) 
    { 
     return AutoMapper.Mapper.Map<TSource, TDestination>(source); 
    } 
} 
Questions connexes