Рассмотрим следующий код:
public class ParentDto
{
public int Id { get; set; }
}
public class ChildDto
{
public int Id { get; set; }
public int ParentId { get; set; }
}
public class Request
{
public List<ParentDto> Parents { get; set; }
public List<ChildDto> Children { get; set; }
}
Мы намеренно решили предоставить ChildDto
свойство с именем ParentId
вместо объекта ParentDto
, чтобы мы могли (надеюсь) предотвратить возможность вызывающих абонентов чтобы предоставить одному и тому же ParentDto
различные значения (свойства значения для краткости опущены). Наша цель состоит в том, чтобы наша система отображения сопоставила эти DTO со следующими классами указанным c способом:
public class Input
{
public List<Parent> Parents { get; set; }
public List<Child> Children { get; set; }
}
public class Parent
{
public int Id { get; set; }
}
public class Child
{
public int Id { get; set; }
public Parent Parent { get; set; }
}
Мы хотели бы, чтобы отображение создало дерево объектов, такое, что любые два объекта Child
чьи родители имеют одинаковое свойство Id
, фактически являются одним и тем же точным объектом (для справки). В настоящее время мы используем Automapper и не смогли найти решение или документацию, которая точно соответствует нашему желанию. Самым большим препятствием, по-видимому, является то, что когда мы пишем профиль сопоставления для ChildDto
в Child
, у нас нет никаких знаний о профиле сопоставления для Request
в Input
, в котором мы ожидаем поиск коллекции из Parent
объектов из.
Это что-то, что может быть аккуратно реализовано с Automapper, или это потребует много лесов или обходных путей? Было бы лучше полностью избежать Automapper для этого сценария? Заранее спасибо!