Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 public virtual void VisitSequenceEnd(IObjectDescriptor sequence)
 {
     nextVisitor.VisitSequenceEnd(sequence);
 }
Пример #4
0
 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);
        }