具有Initialize的Automapper实例版本

时间:2016-11-29 13:01:38

标签: c# asp.net-mvc automapper

我目前正在ASP.Net MVC网站中使用AutoMapper将ViewModels映射到DTO,反之亦然。 当我们设置映射器的实例时,我们目前看到性能问题,可能是因为我们每次都添加配置文件。我的映射器的代码如下:

public class MyMapper
{
    private readonly IMapper _mapper;

    public MyMapper(Profile profile)
    {

        var configuration = new MapperConfiguration(cfg => {
            cfg.AddMemberConfiguration();
            cfg.AddProfile(profile);
        });
        _mapper = configuration.CreateMapper();
    }

    public IMapper Mapper {get; set;} 
}

因此,当我需要映射时,我将我需要的Profile传递给MyMapper包装器,然后设置配置,并为我提供一个Profile的映射器。这很好,因为我使用多个配置文件来允许相同类型的不同映射。

因此,每次创建MyMapper对象时,我都会看到性能上升,大概是AutoMapper每次都在执行所有配置。当我在线查看时,它表明我使用Mapper.Initialize()调用,因此配置只进行一次。我的问题是,这是static AutoMapper版本,而不是实例版本。

有没有人有任何关于如何通过Automapper的配置文件和实例版本设置配置的示例,并且只进行一次配置?

如果没有,我的线程安全选项是什么?

  • 在需要时将Configuration依赖注入我的映射器?
  • 可以从Configuration
  • 共享的Global.asax个对象的静态版本

Switch between configurations in AutoMapper中给出的答案是否合适且线程安全?

0 个答案:

没有答案