Automapper,在同一复杂类或其同胚等价类之间克隆对象

本文关键字:之间 对象 复杂 Automapper | 更新日期: 2023-09-27 18:26:44

在这个问题中,简单类的克隆得到了回答。

我的问题是

  1. 同样的方法适用于具有复杂属性的类吗?或者需要映射整个类属性层次结构?

  2. 有没有一种简单的方法可以用AutoMapper复制两个结构完全相同(同胚)的复杂类?

Automapper,在同一复杂类或其同胚等价类之间克隆对象

是的,您可以对所有这些请求使用AutoMapper。

  1. 是的,同样的方法也适用于复杂类型,只要你也从那里创建地图。

  2. AutoMapper会为您做到这一点。

.NETFiddle 的链接

代码:

// Creating poco instance
var personDTO = new PersonDTO
{
    FirstName = "Jon",
    LastName = "Smith",
    Address = new AddressDTO
    {
        City = "New York City",
        State = "NY",
        Street = "12 Main ST",
        ZipCode = "32211"
    }
};
// Create a mapping scheme
AutoMapper.Mapper.CreateMap<AddressDTO, Address>();
AutoMapper.Mapper.CreateMap<PersonDTO, Person>();
AutoMapper.Mapper.CreateMap<AddressDTO, Address>().ReverseMap();
AutoMapper.Mapper.CreateMap<PersonDTO, Person>().ReverseMap();
// Creating the destination type
var person = AutoMapper.Mapper.Map<PersonDTO, Person>(personDTO);
Console.WriteLine("I'm {0} {1} and i'm from {2} state.", person.FirstName, person.LastName, person.Address.State);
// Output: I'm Jon Smith and i'm from NY state.