我目前正在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中给出的答案是否合适且线程安全?