protected T DeserializeUsingNewtonsoftReader <T>(byte[] bson, bool mustBeNested = false) { using (var memoryStream = new MemoryStream(bson)) //using (var newtonsoftReader = new Newtonsoft.Json.Bson.BsonDataReader(memoryStream)) using (var reader = new BsonBinaryReader(memoryStream)) using (var newtonsoftReader = new BsonReaderAdapter(reader)) { //newtonsoftReader.DateTimeKindHandling = System.DateTimeKind.Utc; newtonsoftReader.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc; if (mustBeNested) { newtonsoftReader.Read(); // StartObject newtonsoftReader.Read(); // PropertyName } newtonsoftReader.Read(); // Json.NET serializers expect caller to have already called Read var newtonsoftSerializer = new Newtonsoft.Json.JsonSerializer(); var value = newtonsoftSerializer.Deserialize <T>(newtonsoftReader); if (mustBeNested) { newtonsoftReader.Read(); // EndObject } return(value); } }
public void Read_should_return_false_when_wrapped_reader_state_is_Done() { var document = new BsonDocument(); var wrappedReader = new BsonDocumentReader(document); var subject = new BsonReaderAdapter(wrappedReader); subject.Read(); // StartObject subject.Read(); // EndObject wrappedReader.State.Should().Be(BsonReaderState.Done); var result = subject.Read(); result.Should().BeFalse(); }