MongoDB.Bson.Serialization.BsonMemberMap.GetDiscriminatorConvention C# (CSharp) Метод

GetDiscriminatorConvention() приватный Метод

Gets the discriminator convention for the member type.
private GetDiscriminatorConvention ( ) : IDiscriminatorConvention
Результат IDiscriminatorConvention
        internal IDiscriminatorConvention GetDiscriminatorConvention()
        {
            // return a cached discriminator convention when possible
            var discriminatorConvention = _cachedDiscriminatorConvention;
            if (discriminatorConvention == null)
            {
                // it's possible but harmless for multiple threads to do the initial lookup at the same time
                discriminatorConvention = BsonSerializer.LookupDiscriminatorConvention(_memberType);
                _cachedDiscriminatorConvention = discriminatorConvention;
            }
            return discriminatorConvention;
        }

Usage Example

Пример #1
0
        private object DeserializeMemberValue(BsonReader bsonReader, BsonMemberMap memberMap)
        {
            try
            {
                var nominalType = memberMap.MemberType;

                var bsonType = bsonReader.GetCurrentBsonType();
                if (bsonType == BsonType.Null && nominalType.IsInterface)
                {
                    bsonReader.ReadNull();
                    return(null);
                }

                Type actualType;
                if (bsonType == BsonType.Null)
                {
                    actualType = nominalType;
                }
                else
                {
                    var discriminatorConvention = memberMap.GetDiscriminatorConvention();
                    actualType = discriminatorConvention.GetActualType(bsonReader, nominalType); // returns nominalType if no discriminator found
                }

                var serializer = memberMap.GetSerializer(actualType);
                return(serializer.Deserialize(bsonReader, nominalType, actualType, memberMap.SerializationOptions));
            }
            catch (Exception ex)
            {
                var message = string.Format(
                    "An error occurred while deserializing the {0} {1} of class {2}: {3}", // terminating period provided by nested message
                    memberMap.MemberName, (memberMap.MemberInfo.MemberType == MemberTypes.Field) ? "field" : "property", memberMap.ClassMap.ClassType.FullName, ex.Message);
                throw new FileFormatException(message, ex);
            }
        }
All Usage Examples Of MongoDB.Bson.Serialization.BsonMemberMap::GetDiscriminatorConvention