Asp.net mvc 5 如何处理内部调用AutoMapper Initialize的第三方程序集

Asp.net mvc 5 如何处理内部调用AutoMapper Initialize的第三方程序集,asp.net-mvc-5,automapper,Asp.net Mvc 5,Automapper,我使用了一个第三方DLL,它在内部使用AutoMapper并用AutoMapper.Initialize对其进行初始化,但据我所知,我也不能调用Initialize,因为它清除了现有的映射 第三方使用AutoMapper而不与我自己的代码冲突的最佳解决方案是什么 或者另一种方式。。共享程序集应该如何使用AutoMapper进行自我设置,AutoMapper保证自己的配置文件已初始化,但允许该程序集的使用者初始化自己的配置文件 第三方部件是否应定义其外形并依赖调用代码初始化所有启用的外形-从第三方

我使用了一个第三方DLL,它在内部使用AutoMapper并用AutoMapper.Initialize对其进行初始化,但据我所知,我也不能调用Initialize,因为它清除了现有的映射

第三方使用AutoMapper而不与我自己的代码冲突的最佳解决方案是什么

或者另一种方式。。共享程序集应该如何使用AutoMapper进行自我设置,AutoMapper保证自己的配置文件已初始化,但允许该程序集的使用者初始化自己的配置文件

第三方部件是否应定义其外形并依赖调用代码初始化所有启用的外形-从第三方部件手动添加外形


目前我正在使用AutoMapper 5.1。

最好的方法是不要使用Mapper的静态实例-创建自己的实例,并使用依赖项注入在需要使用AutoMapper的任何地方注入IMapper的实例。这也使得测试代码变得更加容易

以下是我使用autofac作为DI容器的方式:

builder.Register<IMapper>(c =>
{
    var profiles = c.Resolve<IEnumerable<Profile>>();
    var config = new MapperConfiguration(cfg =>
    {
        foreach (var profile in profiles)
        {
            cfg.AddProfile(profile);
        }
    });
    return config.CreateMapper();
}).SingleInstance();
这样,每当我需要使用automapper时,我只需将其添加到构造函数中:

公共类MyClass { 专用只读IMapper\u映射器

public MyClass(IMapper mapper)
{
    _mapper = mapper;
}

public void DoSomething()
{
    var mapped = _mapper.Map<Dto>(....);
}
}