AutoMapper是一个对象映射库,它可以将一个对象映射到另一个对象。当我们需要将一个对象映射到多个对象时,可以使用链式映射/传递映射/链式映射。
链式映射使用AutoMapper的ForMember()方法和MapFrom()方法来将一个对象的属性映射到另一个对象的属性。代码示例:
public class Source { public int Id { get; set; } public string Name { get; set; } }
public class Destination1 { public int Id { get; set; } public string FirstName { get; set; } }
public class Destination2 { public int Id { get; set; } public string LastName { get; set; } }
public static void Main(string[] args)
{
Mapper.Initialize(cfg =>
{
cfg.CreateMap
cfg.CreateMap()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id))
.ForMember(dest => dest.LastName, opt => opt.MapFrom(src => src.Name));
});
var source = new Source { Id = 1, Name = "John Doe" };
var destination1 = Mapper.Map(source);
var destination2 = Mapper.Map(source);
}
传递映射可以通过AutoMapper的内置映射特性来实现。代码示例:
public class Source { public int Id { get; set; } public string Name { get; set; } public SubSource Sub { get; set; } }
public class SubSource { public int SubId { get; set; } public string SubName { get; set; } }
public class Destination { public int Id { get; set; } public string Name { get; set; } public int