Пример #1
0
 public virtual void VisitSequenceStart(IObjectDescriptor sequence, Type elementType)
 {
     nextVisitor.VisitSequenceStart(sequence, elementType);
 }
 public virtual void VisitSequenceStart(IObjectDescriptor sequence, Type elementType, IEmitter context)
 {
     nextVisitor.VisitSequenceStart(sequence, elementType, context);
 }
Пример #3
0
 public virtual void VisitSequenceStart(object sequence, Type sequenceType, Type elementType)
 {
     nextVisitor.VisitSequenceStart(sequence, sequenceType, elementType);
 }
        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);
        }