public void DeserializeBson(BsonDeserializingContext context)
        {
            context.BsonReader.ReadStartDocument();
            if (context.BsonReader.State == BsonReaderState.Type)
            {
                context.BsonReader.ReadBsonType();
            }
            while (context.BsonReader.State != BsonReaderState.EndOfDocument)
            {
                string name = context.BsonReader.ReadName(Utf8NameDecoder.Instance);

                if (_typeConfig.Members.TryGetValue(name, out var memConfig))
                {
                    var o = _manager.DeserializeBsonValue(memConfig.TypeConfiguration, this, name, context);
                    _values[name] = o;
                }
                else
                {
                    _manager.DeserializeBsonIgnoredValue(context, name);
                }

                if (context.BsonReader.State == BsonReaderState.Type)
                {
                    context.BsonReader.ReadBsonType();
                }
            }
            context.BsonReader.ReadEndDocument();
        }
Exemplo n.º 2
0
 public T DeserializeBson <T>(BsonDocument document)
 {
     using (var reader = new BsonDocumentReader(document))
     {
         var context = new BsonDeserializingContext {
             BsonReader = reader
         };
         return((T)DeserializeBsonValue(_configurations[typeof(T)], null, null, context));
     }
 }
Exemplo n.º 3
0
        public void DeserializeBson(BsonDeserializingContext context)
        {
            context.BsonReader.ReadStartDocument();
            if (context.BsonReader.State == BsonReaderState.Type)
            {
                context.BsonReader.ReadBsonType();
            }
            while (context.BsonReader.State != BsonReaderState.EndOfDocument)
            {
                string name = context.BsonReader.ReadName(Utf8NameDecoder.Instance);

                var o = _manager.DeserializeBsonValue(_typeConfig.ValueType, this, name, context);
                _inner.Add(name, o);
                if (context.BsonReader.State == BsonReaderState.Type)
                {
                    context.BsonReader.ReadBsonType();
                }
            }
            context.BsonReader.ReadEndDocument();
        }
Exemplo n.º 4
0
        public void DeserializeBsonIgnoredValue(BsonDeserializingContext context, string name)
        {
            var obj = BsonSerializer.Deserialize(context.BsonReader, typeof(object));

            Log.Warning($"Bson property {name}={obj} is ignored");
        }
Exemplo n.º 5
0
 public object DeserializeBsonValue(TypeConfiguration typeConfig, IEntityHandler parent, string property, BsonDeserializingContext context)
 {
     if (typeConfig.Creator != null)
     {
         var result  = typeConfig.Creator(parent, property);
         var handler = (IEntityHandlerProvider)result;
         handler.GetHandler().DeserializeBson(context);
         return(result);
     }
     else
     {
         return(BsonSerializer.Deserialize(context.BsonReader, typeConfig.Type));
     }
 }