/// <inheritdoc /> protected sealed override TypeToRegister BuildTypeToRegisterForPostInitializationRegistration( Type type, Type recursiveOriginType, Type directOriginType, MemberTypesToInclude memberTypesToInclude, RelatedTypesToInclude relatedTypesToInclude) { if (type == null) { throw new ArgumentNullException(nameof(type)); } if (recursiveOriginType == null) { throw new ArgumentNullException(nameof(recursiveOriginType)); } if (directOriginType == null) { throw new ArgumentNullException(nameof(directOriginType)); } var genericTypeDefinition = type.GetGenericTypeDefinition(); var genericTypeDefinitionTypeToRegister = (TypeToRegisterForPropertyBag)this.RegisteredTypeToRegistrationDetailsMap[genericTypeDefinition].TypeToRegister; var result = new TypeToRegisterForPropertyBag(type, recursiveOriginType, directOriginType, memberTypesToInclude, relatedTypesToInclude, genericTypeDefinitionTypeToRegister.StringSerializerBuilderFunc); return(result); }
/// <inheritdoc /> public override TypeToRegister CreateSpawnedTypeToRegister( Type type, TypeToIncludeOrigin typeToIncludeOrigin) { var result = new TypeToRegisterForPropertyBag(type, this.RecursiveOriginType, this.Type, this.MemberTypesToInclude, this.RelatedTypesToInclude, this.StringSerializerBuilderFunc); return(result); }
/// <summary> /// Builds a <see cref="TypeToRegisterForPropertyBag"/> from a type using the most sensible settings. /// </summary> /// <param name="type">The type to register.</param> /// <returns> /// The type to register for property bag serialization. /// </returns> public static TypeToRegisterForPropertyBag ToTypeToRegisterForPropertyBag( this Type type) { if (type == null) { throw new ArgumentNullException(nameof(type)); } var result = new TypeToRegisterForPropertyBag(type, MemberTypesToInclude.All, RelatedTypesToInclude.Default, null); return(result); }
private void ProcessTypeToRegisterForPropertyBag( TypeToRegisterForPropertyBag typeToRegisterForPropertyBag) { var type = typeToRegisterForPropertyBag.Type; var stringSerializerBuilderFunc = typeToRegisterForPropertyBag.StringSerializerBuilderFunc; if (stringSerializerBuilderFunc != null) { this.typeToSerializerMap.Add(type, stringSerializerBuilderFunc()); this.typesWithCustomSerializers.Add(type, null); } }
/// <summary> /// Builds a <see cref="TypeToRegisterForPropertyBag"/> from a type using the most sensible settings, /// with a specified <see cref="IStringSerializeAndDeserialize"/> to use everywhere the type appears. /// </summary> /// <param name="type">The type to register.</param> /// <param name="stringSerializer">The string serializer to use for <paramref name="type"/>.</param> /// <returns> /// The type to register for property bag serialization. /// </returns> public static TypeToRegisterForPropertyBag ToTypeToRegisterForPropertyBagUsingStringSerializer( this Type type, IStringSerializeAndDeserialize stringSerializer) { if (type == null) { throw new ArgumentNullException(nameof(type)); } if (stringSerializer == null) { throw new ArgumentNullException(nameof(stringSerializer)); } var result = new TypeToRegisterForPropertyBag(type, MemberTypesToInclude.None, RelatedTypesToInclude.Default, () => stringSerializer); return(result); }