2010-02-04 69 views
4

我们使用的代码库基于构造函数的依赖注入,AutoMapperUnity默认的团结类型映射。指定为通用接口和类对

我们包裹AutoMapper通用接口...

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

而实现此接口的类...

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

这种运作良好,但它意味着,每映射我们在AutoMapper配置中定义我们需要执行额外的UnityContainer.RegisterType

这些类型映射几乎都是形式

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

是没有什么办法,我们可以告诉统一使用,从IMapper映射的默认类型映射到AutomaticMapper使用相同TSourceTDestination为每他们?

回答

9

我们实际上做了几乎相同的事情。在Unity,你可以说:

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