Automapper、Mapper 未初始化。使用正确的配置调用初始化

作者:编程家 分类: 编程代码 时间:2025-08-22

Automapper配置和初始化

在软件开发过程中,经常会遇到需要将一个对象的数据映射到另一个对象上的情况。为了简化这一过程,我们可以使用Automapper来自动执行这个映射过程。然而,在使用Automapper之前,我们需要先进行配置和初始化。

配置Automapper

首先,我们需要在项目中安装Automapper的NuGet包。在Visual Studio中,可以通过NuGet包管理器来完成安装。安装完成后,我们就可以在代码中使用Automapper了。

接下来,我们需要在应用程序的启动过程中配置Automapper。通常,我们会在应用程序的入口点,比如Global.asax.cs文件中进行配置。在配置Automapper时,我们需要指定源类型和目标类型之间的映射规则。这些规则告诉Automapper如何将源类型的属性值映射到目标类型的属性上。

例如,假设我们有一个名为Person的类和一个名为PersonDto的类,它们具有相同的属性。我们可以使用Automapper来将Person对象的属性值映射到PersonDto对象上,如下所示:

csharp

public class Person

{

public string Name { get; set; }

public int Age { get; set; }

public string Address { get; set; }

}

public class PersonDto

{

public string Name { get; set; }

public int Age { get; set; }

public string Address { get; set; }

}

在配置Automapper时,我们可以使用CreateMap方法来创建映射规则,然后使用ForSourceMember和ForDestinationMember方法来指定源类型和目标类型的属性映射规则。例如:

csharp

Mapper.Initialize(cfg =>

{

cfg.CreateMap()

.ForMember(dest => dest.Address, opt => opt.MapFrom(src => src.Address));

});

在上述代码中,我们创建了一个从Person到PersonDto的映射规则,并指定了Address属性的映射规则。这样,当我们使用Automapper将一个Person对象映射到PersonDto对象时,Address属性的值将会被自动复制。

初始化Automapper

一旦我们完成了Automapper的配置,就需要在应用程序启动时对其进行初始化。在ASP.NET应用程序中,我们可以在Global.asax.cs文件的Application_Start方法中调用Mapper.Initialize方法来初始化Automapper。

csharp

protected void Application_Start()

{

// Other initialization code...

Mapper.Initialize(cfg =>

{

cfg.CreateMap()

.ForMember(dest => dest.Address, opt => opt.MapFrom(src => src.Address));

});

// Other initialization code...

}

在上述代码中,我们在Application_Start方法中调用了Mapper.Initialize方法,并将之前配置的映射规则传递给它。这样,当应用程序启动时,Automapper就会根据我们的配置进行初始化,从而可以在整个应用程序中使用Automapper进行对象映射。

案例代码

下面是一个简单的示例代码,演示了如何使用Automapper进行对象映射:

csharp

public class Person

{

public string Name { get; set; }

public int Age { get; set; }

public string Address { get; set; }

}

public class PersonDto

{

public string Name { get; set; }

public int Age { get; set; }

public string Address { get; set; }

}

// 在应用程序启动时进行Automapper的配置和初始化

protected void Application_Start()

{

Mapper.Initialize(cfg =>

{

cfg.CreateMap()

.ForMember(dest => dest.Address, opt => opt.MapFrom(src => src.Address));

});

// Other initialization code...

}

// 在某个方法中使用Automapper进行对象映射

public PersonDto MapPersonToDto(Person person)

{

return Mapper.Map(person);

}

在上述代码中,我们首先在Application_Start方法中进行了Automapper的配置和初始化。然后,在MapPersonToDto方法中,我们使用Automapper将一个Person对象映射到PersonDto对象上。

通过配置和初始化Automapper,我们可以轻松地实现对象之间的属性映射,减少了重复的手动映射工作,提高了开发效率。

在本文中,我们介绍了如何配置和初始化Automapper,以及如何在应用程序中使用Automapper进行对象映射。通过使用Automapper,我们可以简化对象之间的属性映射过程,提高代码的可读性和可维护性。希望本文对你在使用Automapper时有所帮助。