Exemplo n.º 1
0
        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);
                    }
        }
Exemplo n.º 2
0
        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();
        }