У меня есть следующие классы.Как сопоставить вложенный объект в существующий вложенный объект?
public class Person {
public string Name { get; set; }
public Address Address { get; set; }
}
public class PersonDTO {
public string Name { get; set; }
public Address Address { get; set; }
}
создать стандартное отображение с помощью
Mapper.CreateMap<Person, PersonDTO>();
Тогда я хотел бы сопоставить Person
в существующую PersonDTO
иерархии таким образом, что существующий Address
будет обновляться вместо ссылки скопированной если вы знаешь что я имею ввиду.
var person = new Person() {
Name = "Test",
Address = new Address() {
Country = "USA",
City = "New York"
}
};
var personDTO = new PersonDTO() {
Name = "Test2",
Address = new Address() {
Country = "Canada",
City = "Ottawa"
}
};
Mapper.Map(person, personDTO);
Я хотел бы выполнить следующие тесты.
Assert.AreNotEqual(person.Address, personDTO.Address);
Assert.AreEqual(person.Address.Country, personDTO.Address.Country);
Assert.AreEqual(person.Address.City, personDTO.Address.City);
Спасибо, я хочу попробовать это. Это утверждение было всего лишь показателем псевдослучайности, спасибо за подсказки. –
Да, это хорошо работает, спасибо. Однако в реальном мире я использую 'DynamicMap' для простоты, и было бы очень много шаблонов, чтобы явно определять все эти самоотображения. Нет ли какого-либо неявного способа сделать это поведение по умолчанию? Или я могу создать свой собственный метод, который попытался бы использовать 'CreateMissingTypeMaps' для вложенных сопоставлений тоже? –
Не знаю, о чем я знаю. Но, возможно, есть один. Подумайте о том, чтобы задать вопрос об этом. –