У меня есть эти бизнес-классы:
class BaseNode
{
public string name;
}
class CompositeNode : BaseNode
{
public List<BaseNode> childs = new List<BaseNode>();
}
И эта квартира dto:
class NodeDto
{
public string name;
public List<NodeDto> childs;
}
(обратите внимание, как все производные типы представлены одним классом dto)
Я использую auto mapper , чтобы сделать преобразование:
Mapper.CreateMap<BaseNode, NodeDto>()
.Include<CompositeNode, NodeDto>()
.ForMember(s => s.childs, prop => prop.Ignore());
Mapper.CreateMap<CompositeNode, NodeDto>();
Mapper.AssertConfigurationIsValid();
var root = new CompositeNode() { name = "root" };
var child = new CompositeNode {name = "child"};
var child2 = new CompositeNode { name = "child2" };
root.childs.Add(child);
child.childs.Add(child2);
var rootDto = Mapper.Map<CompositeNode, NodeDto>(root);
Однако приведенное ниже значение всегда пусто вместо наличия дочернего списка:
rootDto.childs[0].childs
(т.е. правильно отображается только дочерний элемент первого уровня)
Если я удаляю prop.Ignore part, я получаю ошибку подтверждения, что свойство childs не сопоставлено.
Что я делаю не так?