C# Traverse object hierarchy for execution of method
<p>I have a Case object that in itself contains a number of objects (see below), that again contains objects. </p>

<p>These objects can inherit from a BaseDto class, that implements the ValidateObject method, that executes a DataAnnotation validator on the current object, thus returning with validation errors, accumulated into a ValidationResult collection.</p>

<p>I would like to transform the following cluttered syntax, to something where I can traverse the object hierarchy of a given object, and for each of the objects (and its children!) that implements ValidateObject, execute it. </p>

<p>I'm feeling kinda stuck at the moment, so I would be grateful for any ideas.</p>

<pre><code>cCase.ValidateObject() &amp;
cCase.Object1.ValidateObject() &amp;
cCase.Object2.ValidateObject() &amp;
cCase.Object3.ValidateObject() &amp;
cCase.Object3.ChildObject1.ValidateObject() &amp;
cCase.Object3.ChildObject2.ValidateObject() &amp;
cCase.Object3.ChildObject3.ValidateObject() &amp;
cCase.Object3.ChildObject4.ValidateObject() &amp;
cCase.Object3.ChildObject4.ChildChildObject1.ValidateObject() &amp;
cCase.Object3.ChildObject5.ValidateObject() &amp;
cCase.Object4.ValidateObject() &amp;
cCase.Object4.ChildObject6.ValidateObject();
</code></pre>
