Automapper,在相同复合体 Class 或其同胚等价体 class 之间克隆对象

Automapper, cloning objects between Same Complex Class or Their Homeomorphic Equivalant class

In this question,简单的克隆 class 得到解答。

我的问题是

  1. 同样的方法是否适用于具有复杂属性的 classes?还是需要映射整个 class 属性 层次结构?

  2. 有没有简单的方法用 AutoMapper 复制两个具有完全相同结构(同胚)的复杂 classes?

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

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

  2. AutoMapper 会为您完成。

Link 对于 .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.