详解c# AutoMapper 使用方式
什么是AutoMapper?
AutoMapper是一个C#库,用于对象之间的映射(mapping)。当我们需要将一个对象(Source)的属性值映射到另一个对象(Target)时,AutoMapper可以帮助我们快速而简便地完成这项工作,而无需手动写出大量的赋值表达式。
安装AutoMapper
可以通过NuGet包管理器或手动下载离线包的方式进行安装。使用NuGet包管理器安装方法:打开Visual Studio的“控制台”,输入以下命令即可安装:
Install-Package AutoMapper
AutoMapper的使用方式
- 配置映射关系
通过创建映射配置来告诉AutoMapper如何将源对象的属性映射到目标对象的属性。可以创建多个映射配置,使其适应不同的场景。
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Source, Target>();
});
- 执行映射操作
创建一个Mapper对象,该对象包含了我们的映射配置,然后使用Map方法进行实际的映射操作。
var mapper = new Mapper(config);
var sourceObject = new Source();
var targetObject = mapper.Map<Target>(sourceObject);
AutoMapper的示例
示例1:简单的映射操作
源数据:
public class Source
{
public int Id { get; set; }
public string Name { get; set; }
}
目标数据:
public class Target
{
public int Id { get; set; }
public string Name { get; set; }
}
映射代码:
var config = new MapperConfiguration(cfg => cfg.CreateMap<Source, Target>());
var mapper = new Mapper(config);
Source source = new Source { Id = 1, Name = "Test" };
Target target = mapper.Map<Target>(source);
Console.WriteLine("source.Id={0}, source.Name={1}", source.Id, source.Name);
Console.WriteLine("target.Id={0}, target.Name={1}", target.Id, target.Name);
输出结果:
source.Id=1, source.Name=Test
target.Id=1, target.Name=Test
示例2:使用includeMembers选项映射不同属性名的属性
源数据:
public class Source
{
public int Id { get; set; }
public string SourceName { get; set; }
}
目标数据:
public class Target
{
public int Id { get; set; }
public string TargetName { get; set; }
}
映射代码:
var config = new MapperConfiguration(cfg => {
cfg.CreateMap<Source, Target>().ForMember(dest => dest.TargetName, opt => opt.MapFrom(src => src.SourceName));
});
var mapper = new Mapper(config);
Source source = new Source { Id = 1, SourceName = "Test" };
Target target = mapper.Map<Target>(source);
Console.WriteLine("source.Id={0}, source.SourceName={1}", source.Id, source.SourceName);
Console.WriteLine("target.Id={0}, target.TargetName={1}", target.Id, target.TargetName);
输出结果:
source.Id=1, source.SourceName=Test
target.Id=1, target.TargetName=Test
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解c# AutoMapper 使用方式 - Python技术站