private void TraverseList(IObjectDescriptor value, IObjectGraphVisitor visitor, int currentDepth) { var enumerableType = ReflectionUtility.GetImplementedGenericInterface(value.Type, typeof(IEnumerable <>)); var itemType = enumerableType != null?enumerableType.GetGenericArguments()[0] : typeof(object); visitor.VisitSequenceStart(value, itemType); foreach (var item in (IEnumerable)value.Value) { Traverse(GetObjectDescriptor(item, itemType), visitor, currentDepth); } visitor.VisitSequenceEnd(value); }
private void TraverseList <TContext>(IObjectDescriptor value, IObjectGraphVisitor <TContext> visitor, TContext context, Stack <ObjectPathSegment> path) { var enumerableType = ReflectionUtility.GetImplementedGenericInterface(value.Type, typeof(IEnumerable <>)); var itemType = enumerableType != null?enumerableType.GetGenericArguments()[0] : typeof(object); visitor.VisitSequenceStart(value, itemType, context); var index = 0; foreach (var item in (IEnumerable)value.Value) { Traverse(index, GetObjectDescriptor(item, itemType), visitor, context, path); ++index; } visitor.VisitSequenceEnd(value, context); }
public virtual void VisitSequenceEnd(IObjectDescriptor sequence) { nextVisitor.VisitSequenceEnd(sequence); }
public virtual void VisitSequenceEnd(object sequence, Type sequenceType) { nextVisitor.VisitSequenceEnd(sequence, sequenceType); }
public virtual void VisitSequenceEnd(IObjectDescriptor sequence, IEmitter context) { nextVisitor.VisitSequenceEnd(sequence, context); }
private void TraverseList(IObjectDescriptor value, IObjectGraphVisitor visitor, int currentDepth) { var enumerableType = ReflectionUtility.GetImplementedGenericInterface(value.Type, typeof(IEnumerable<>)); var itemType = enumerableType != null ? enumerableType.GetGenericArguments()[0] : typeof(object); visitor.VisitSequenceStart(value, itemType); foreach (var item in (IEnumerable)value.Value) { Traverse(GetObjectDescriptor(item, itemType), visitor, currentDepth); } visitor.VisitSequenceEnd(value); }