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(); }
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)); } }
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(); }
public void DeserializeBsonIgnoredValue(BsonDeserializingContext context, string name) { var obj = BsonSerializer.Deserialize(context.BsonReader, typeof(object)); Log.Warning($"Bson property {name}={obj} is ignored"); }
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)); } }