我有這方面的業務類:多態性與AutoMapper
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部分,我得到一個assert錯誤,未能映射childs屬性。
我在做什麼錯?
我在做什麼錯?你正在使用Automapper:D lol – Omu 2010-09-02 21:11:01
那有什麼問題? – 2010-09-02 21:18:28