public override void VisitObjectMember(object container, ObjectDescriptor containerDescriptor, IMemberDescriptor member, object value) { if (!AcceptMember(member)) { return; } var node = stackItems.Peek(); var newNode = new DataVisitMember(value, member); AddMember(node, newNode); stackItems.Push(newNode); base.VisitObjectMember(container, containerDescriptor, member, value); stackItems.Pop(); }
/// <summary> /// Adds a member to a <see cref="DataVisitNode"/> instance. /// </summary> /// <param name="thisObject">The this object.</param> /// <param name="member">The member.</param> /// <exception cref="System.ArgumentNullException">member</exception> private static void AddMember(DataVisitNode thisObject, DataVisitMember member) { if (member == null) throw new ArgumentNullException("member"); if (thisObject.Members == null) thisObject.Members = new List<DataVisitNode>(); member.Parent = thisObject; thisObject.Members.Add(member); }