C# 如何将父类对象添加到派生列表
我有C# 如何将父类对象添加到派生列表,c#,derived-class,C#,Derived Class,我有节点类: public class Node { public ObservableCollection<Node> Childs {get;set;} //some other properties } 公共类节点 { 公共可观测集合子对象{get;set;} //其他一些属性 } 和派生类节点示例: public class NodeSimple:Node { public new ObservableCollection<Node> Childs
节点
类:
public class Node
{
public ObservableCollection<Node> Childs {get;set;}
//some other properties
}
公共类节点
{
公共可观测集合子对象{get;set;}
//其他一些属性
}
和派生类节点示例:
public class NodeSimple:Node
{
public new ObservableCollection<Node> Childs {get;set;}//do some work
}
公共类节点示例:节点
{
public new observetecollection Childs{get;set;}//做一些工作
}
然后我有一个节点列表:
List<Node> nodeList=GetNodes();
List nodeList=GetNodes();
我想将其转换为节点示例列表:
List<NodeSimple> simpleList=new List<NodeSimple>();
foreach(var node in nodeList)
simpleList.Add(node as NodeSimple);
List simpleList=new List();
foreach(节点列表中的var节点)
添加(节点为NodeSimple);
但是我在节点处有null作为NodeSimple
我做错了什么? 我只是想把它转换成。
谢谢大家! NodeSimple始终是一个节点,但相反的情况并不总是正确的代码>实际是
列出节点列表=GetNodes()代码>?不能将基类强制转换为这样的派生类(只有当基类变量引用派生类对象时,它才会起作用)。相反,您需要编写代码将一个转换为另一个。但你们真的要这么做吗?我需要改变节点类的行为:他有“聪明”的子属性,可以自己检查节点上的childs(在childs属性上检查childs并根据一些规则进行过滤)。如果节点作为节点simple
返回null
,然后,node
引用的对象不是NodeSimple
的实例,并且禁止简单地将其强制转换为NodeSimple
。从你的问题中不清楚为什么你期望那里有一个非空的结果;您是否不希望nodeList
包含NodeSimple
实例以外的内容?您认为您应该能够以某种方式转换不是NodeSimple
实例的Node
实例吗?如果没有一个好的答案,就不可能完全理解你的问题,更不用说提供一个好的、有用的答案。