MongoDB.Bson.Serialization.BsonSerializationInfo.DeserializeValue C# (CSharp) Метод

DeserializeValue() публичный Метод

Deserializes the value.
public DeserializeValue ( BsonValue value ) : object
value BsonValue The value.
Результат object
        public object DeserializeValue(BsonValue value)
        {
            var tempDocument = new BsonDocument("value", value);
            using (var reader = BsonReader.Create(tempDocument))
            {
                reader.ReadStartDocument();
                reader.ReadName("value");
                var deserializedValue = _serializer.Deserialize(reader, _nominalType, _serializationOptions);
                reader.ReadEndDocument();
                return deserializedValue;
            }
        }

Usage Example

        public void SetValue(object targetResource, string propertyName, object propertyValue)
        {
            var resourceType = GetResourceType(targetResource);
            var annotation = (TypedResourceTypeAnnotation)resourceType.CustomState;
            var memberMap = annotation.ClassMap.GetMemberMap(propertyName);
            var serializer = memberMap.GetSerializer(memberMap.MemberType) as IBsonArraySerializer;
            if (serializer != null)
            {
                var itemSerializationInfo = serializer.GetItemSerializationInfo();
                var array = itemSerializationInfo.SerializeValues((IEnumerable)propertyValue);
                var memberMapSerializationInfo = new BsonSerializationInfo(memberMap.ElementName,
                    serializer,
                    memberMap.MemberType,
                    memberMap.SerializationOptions);

                propertyValue = memberMapSerializationInfo.DeserializeValue(array);
            }
            memberMap.Setter(targetResource, propertyValue);
            if (_rememberedInstances.Contains(targetResource))
            {
                return;
            }

            var collection = GetCollection(resourceType);
            _rememberedInstances.Add(targetResource);
            _actions.Add(() => collection.Save(resourceType.InstanceType, targetResource));
        }