代码之家  ›  专栏  ›  技术社区  ›  Richard Ev

为通用接口和类对指定默认的Unity类型映射

  •  4
  • Richard Ev  · 技术社区  · 15 年前

    我们使用基于构造函数的依赖注入, 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>>();
    

    有没有任何方法可以告诉Unity使用默认类型映射 IMapper AutomaticMapper 使用相同的 TSource TDestination 为他们每个人?

    3 回复  |  直到 13 年前
        1
  •  9
  •   pdalbe01    15 年前

    实际上我们做的几乎是同样的事情。在团结中,你可以说:

    unityContainer.RegisterType(typeof(IMapper<,>), typeof(AutomaticMapper<,>));
    
        2
  •  1
  •   Peter Ritchie    15 年前

    Unity有一个自动注册插件,可能会满足您的需要。看一看 http://unity.codeplex.com/Thread/View.aspx?ThreadId=59418

        3
  •  1
  •   Richard Ev    15 年前
    public class AutomaticMapper : IMapper
    {
        public TDestination Map<TSource, TDestination>(TSource source)
        {
            return AutoMapper.Mapper.Map<TSource, TDestination>(source);
        }
    }