我们正在使用基于构造函数的依赖注入(inject),AutoMapper和 Unity在代码库上。
我们用通用接口(interface)包装了 AutoMapper...
public interface IMapper<TSource, TDestination>
{
TDestination Map(TSource source);
}
还有一个实现这个接口(interface)的类......
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>>();
有什么方法可以告诉 unity 使用从
IMapper
映射的默认类型映射至AutomaticMapper
使用相同的TSource
和 TDestination
他们每个人?
最佳答案
我们实际上做了几乎完全相同的事情。在 Unity 中,您可以说:
unityContainer.RegisterType(typeof(IMapper<,>), typeof(AutomaticMapper<,>));
关于dependency-injection - 为通用接口(interface)和类对指定默认 Unity 类型映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2198982/