dependency-injection - 为通用接口(interface)和类对指定默认 Unity 类型映射

标签 dependency-injection unity-container automapper

我们正在使用基于构造函数的依赖注入(inject),AutoMapperUnity在代码库上。

我们用通用接口(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使用相同的TSourceTDestination他们每个人?

最佳答案

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

unityContainer.RegisterType(typeof(IMapper<,>), typeof(AutomaticMapper<,>));

关于dependency-injection - 为通用接口(interface)和类对指定默认 Unity 类型映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2198982/

相关文章:

c# - 使用统一容器 : "The underlying provider failed on Open" 具有连接字符串的 EF 多个构造函数

c# - 需要加速automapper ...做113个对象需要32秒

c# - 从 Automapper.Mapper 获取目标类型

java - 解耦项目引用和依赖注入(inject)

java - 在多个 ejb 之间共享 env-entry

asp.net-web-api - 统一容器 : what is default lifetimemanager

silverlight - AutoMapper 根据源中的属性值忽略集合中的项目

c# - 深层对象图中的动态依赖关系——我做错了什么?

java - 是否可以为模块注入(inject)值(value)

c# - 如何在不使用 CallerInfo 属性的情况下获取 CallerFilePath 和 CallerLineNumber?