> For the complete documentation index, see [llms.txt](https://kinematicsoup.gitbook.io/reactor/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kinematicsoup.gitbook.io/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject.md).

# Class ksHierarchyObject

Namespace: [KS.Reactor](/reactor/api-reference/ks.reactor.md)\
Assembly: KSCommon.dll

Non-templated base class for hierarchy objects with a parent and children. There is also a templated variant that enforces all objects in the hierarchy derive the templated type.

```csharp
public class ksHierarchyObject : ksHierarchyObject<ksHierarchyObject>
```

#### Inheritance

[object](https://learn.microsoft.com/dotnet/api/system.object) ← [ksHierarchyObject\<ksHierarchyObject>](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md) ← [ksHierarchyObject](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject.md)

#### Inherited Members

[ksHierarchyObject\<ksHierarchyObject>.Parent](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_Parent), [ksHierarchyObject\<ksHierarchyObject>.m\_parent](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_m_parent), [ksHierarchyObject\<ksHierarchyObject>.Children](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_Children), [ksHierarchyObject\<ksHierarchyObject>.m\_children](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_m_children), [ksHierarchyObject\<ksHierarchyObject>.Root](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_Root), [ksHierarchyObject\<ksHierarchyObject>.Descendants](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_Descendants), [ksHierarchyObject\<ksHierarchyObject>.SelfAndDescendants](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_SelfAndDescendants), [ksHierarchyObject\<ksHierarchyObject>.Ancestors](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_Ancestors), [ksHierarchyObject\<ksHierarchyObject>.SelfAndAncestors](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_SelfAndAncestors), [ksHierarchyObject\<ksHierarchyObject>.GetChildIndex()](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_GetChildIndex), [ksHierarchyObject\<ksHierarchyObject>.AddChild(ksHierarchyObject)](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_AddChild__0_), [ksHierarchyObject\<ksHierarchyObject>.PerformAddChild(ksHierarchyObject)](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_PerformAddChild__0_), [ksHierarchyObject\<ksHierarchyObject>.InsertChild(int, ksHierarchyObject)](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_InsertChild_System_Int32__0_), [ksHierarchyObject\<ksHierarchyObject>.PerformInsertChild(int, ksHierarchyObject)](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_PerformInsertChild_System_Int32__0_), [ksHierarchyObject\<ksHierarchyObject>.RemoveChild(ksHierarchyObject)](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_RemoveChild__0_), [ksHierarchyObject\<ksHierarchyObject>.PerformRemoveChild(ksHierarchyObject)](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_PerformRemoveChild__0_), [ksHierarchyObject\<ksHierarchyObject>.Detach()](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_Detach), [ksHierarchyObject\<ksHierarchyObject>.PerformDetach()](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_PerformDetach), [ksHierarchyObject\<ksHierarchyObject>.IsDescendantOf(ksHierarchyObject)](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_IsDescendantOf__0_), [ksHierarchyObject\<ksHierarchyObject>.ForEachDescendant(ksHierarchyObject\<ksHierarchyObject>.ForEachCallback)](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_ForEachDescendant_KS_Reactor_ksHierarchyObject__0__ForEachCallback_), [ksHierarchyObject\<ksHierarchyObject>.ForSelfAndDescendants(ksHierarchyObject\<ksHierarchyObject>.ForEachCallback)](/reactor/api-reference/ks.reactor/ks.reactor.kshierarchyobject-1.md#KS_Reactor_ksHierarchyObject_1_ForSelfAndDescendants_KS_Reactor_ksHierarchyObject__0__ForEachCallback_), [object.Equals(object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object\)), [object.Equals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals\(system-object-system-object\)), [object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode), [object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype), [object.MemberwiseClone()](https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone), [object.ReferenceEquals(object, object)](https://learn.microsoft.com/dotnet/api/system.object.referenceequals), [object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)
