public IEnumerable <ParentedNode> GetParentChain() { var chain = new List <ParentedNode>(); ParentedNode current = this; while (current.Parent != null) { chain.Add(current); current = current.Parent; } chain.Reverse(); return(chain); }
public T GetNearestParent <T>() where T : ParentedNode { ParentedNode current = this; while (current.Parent != null) { current = current.Parent; if (current is T) { return((T)current); } } return(null); }