Je ces classes d'affaires:Polymorphisme avec AutoMapper
class BaseNode
{
public string name;
}
class CompositeNode : BaseNode
{
public List<BaseNode> childs = new List<BaseNode>();
}
Et ce DTO plat:
class NodeDto
{
public string name;
public List<NodeDto> childs;
}
(notez comment tous les types dérivés sont représentés par une classe DTO)
J'utilise auto mapper pour faire une conversion:
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);
Cependant, la place ci-dessous est toujours nul d'avoir la liste des enfants:
rootDto.childs[0].childs
(à savoir seul le premier niveau enfant est mappé correctement)
Si je supprime la partie prop.Ignore, j'obtiens une erreur d'assertion que la propriété childs n'est pas mappée.
Qu'est-ce que je fais mal?
Qu'est-ce que je fais mal? Vous utilisez Automapper: D lol – Omu
quel est le problème avec cela? –