Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自动映射多态性_C#_Polymorphism_Automapper_Dto - Fatal编程技术网

C# 自动映射多态性

C# 自动映射多态性,c#,polymorphism,automapper,dto,C#,Polymorphism,Automapper,Dto,我有以下商务课程: class BaseNode { public string name; } class CompositeNode : BaseNode { public List<BaseNode> childs = new List<BaseNode>(); } (即,只有一级子级映射正确) 如果我删除prop.Ignore部分,我会得到一个断言错误,即childs

我有以下商务课程:

class BaseNode
    {
        public string name;        
    }

    class CompositeNode : BaseNode
    {
        public List<BaseNode> childs = new List<BaseNode>();
    }   
(即,只有一级子级映射正确)

如果我删除prop.Ignore部分,我会得到一个断言错误,即childs属性没有映射


我做错了什么?

您的类中没有属性
公共字符串名称{get;set;}
,您有公共字段,我认为这就是问题所在

此外,为了映射这些类,您只需要创建2个简单的映射

Mapper.CreateMap<CompositeNode, NodeDto>();
Mapper.CreateMap<BaseNode, NodeDto>()
         .ForMember(s => s.childs, prop => prop.Ignore());;
Mapper.CreateMap();
Mapper.CreateMap()
.ForMember(s=>s.childs,prop=>prop.Ignore());;

这是旧的,但在寻找其他东西时遇到了它。。。你让它忽略孩子的领域。AutoMapper正在做它被要求做的事情

.ForMember(s => s.childs, prop => prop.Ignore());

我做错了什么?您使用的是Automapper:D。名称字段不是问题所在-它可以以任何方式工作。使用上面的映射并不能解决这个问题。@Yaron Naveh我的意思是使用字段而不是属性,区别在于属性有getter和setter,而字段没有
rootDto.childs[0].childs
Mapper.CreateMap<CompositeNode, NodeDto>();
Mapper.CreateMap<BaseNode, NodeDto>()
         .ForMember(s => s.childs, prop => prop.Ignore());;
.ForMember(s => s.childs, prop => prop.Ignore());