private void Visit(ActivityDO activity, Action <ActivityDO> callback) { callback(activity); foreach (var child in activity.ChildNodes.OfType <ActivityDO>().ToArray()) { Visit(child, callback); } }
private void Compare(ActivityDO reference, ActivityDO actual, Action <ActivityDO, ActivityDO> callback) { callback(reference, actual); if (reference.ChildNodes.Count != actual.ChildNodes.Count) { throw new Exception("Unable to compare nodes with different number of children."); } for (int i = 0; i < reference.ChildNodes.Count; i++) { Compare((ActivityDO)reference.ChildNodes[i], (ActivityDO)actual.ChildNodes[i], callback); } }