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
实例吗?如果没有一个好的答案,就不可能完全理解你的问题,更不用说提供一个好的、有用的答案。