AutoMapper提供了一种在应用程序的生命周期中使用相同配置一次创建一个映射的方法。为此,我们可以使用AutoMapper工厂方法和声明。
首先,我们需要在应用程序启动时配置AutoMapper。在这个示例中,我们正在使用ASP.NET Core的Startup文件。我们可以在ConfigureServices中调用ConfigureAutoMapper方法,该方法设置我们的映射。在此示例中,我们正在使用自定义扩展方法(ConfigureAutoMapper),以在处理器中自定义配置AutoMapper。
public void ConfigureServices(IServiceCollection services) { services.ConfigureAutoMapper(); }
public static class AutoMapperConfig
{
public static void ConfigureAutoMapper(this IServiceCollection services)
{
// 声明AutoMapper映射
Mapper.Initialize(cfg =>
{
cfg.CreateMap
// 为服务注册IMapper
services.AddSingleton(sp => Mapper.Instance);
}
}
接下来,我们可以在需要使用映射的任何地方注入IMapper依赖项。在此示例中,我们正在使用控制器。我们可以使用声明式映射和IMapper实例,将源对象映射到目标对象。
public class MyController : Controller { private readonly IMapper _mapper;
public MyController(IMapper mapper)
{
_mapper = mapper;
}
public IActionResult MyActionMethod(Source source)
{
var destination = _mapper.Map(source);
// ...
}
}
这里,我们使用AutoMapper的Map方法将源对象映射到目标对象。我们不需要在此处指定映射,因为我们在应用程序启动时已经声明了它。我们只需要指定源和目标类型。在此示例中,我们