/// <summary> /// Reads the end of a BSON array from the reader. /// </summary> public override void ReadEndArray() { if (Disposed) { ThrowObjectDisposedException(); } if (_context.ContextType != ContextType.Array) { ThrowInvalidContextType("ReadEndArray", _context.ContextType, ContextType.Array); } if (State == BsonReaderState.Type) { ReadBsonType(); // will set state to EndOfArray if at end of array } if (State != BsonReaderState.EndOfArray) { ThrowInvalidState("ReadEndArray", BsonReaderState.EndOfArray); } _context = _context.PopContext(); switch (_context.ContextType) { case ContextType.Array: State = BsonReaderState.Type; break; case ContextType.Document: State = BsonReaderState.Type; break; case ContextType.TopLevel: State = BsonReaderState.Done; break; default: throw new BsonInternalException("Unexpected ContextType."); } }
/// <summary> /// Reads the end of a BSON array from the reader. /// </summary> public override void ReadEndArray() { if (disposed) { ThrowObjectDisposedException(); } if (context.ContextType != ContextType.Array) { var message = string.Format("ReadEndArray cannot be called when ContextType is: {0}", context.ContextType); throw new InvalidOperationException(message); } if (state == BsonReaderState.Type) { ReadBsonType(); // will set state to EndOfArray if at end of array } if (state != BsonReaderState.EndOfArray) { var message = string.Format("ReadEndArray cannot be called when State is: {0}", state); throw new InvalidOperationException(message); } context = context.PopContext(); switch (context.ContextType) { case ContextType.Array: state = BsonReaderState.Type; break; case ContextType.Document: state = BsonReaderState.Type; break; case ContextType.TopLevel: state = BsonReaderState.Done; break; default: throw new BsonInternalException("Unexpected ContextType"); } }