Мы используем внедрение зависимостей на основе конструктора, AutoMapper и Unity на базе кода.
Мы обернули 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
, используя те же TSource
и TDestination
для каждого из них?