public CompactSchemaGenerator(JsonSerializer jsonSerializer, MetadataJsonSerializationOptions metadataJsonSerializationOptions)
        {
            _jsonSerializer = jsonSerializer;
            _metadataJsonSerializationOptions = metadataJsonSerializationOptions;

            NamingStrategy namingStrategy = (_jsonSerializer.ContractResolver as DefaultContractResolver)?.NamingStrategy ?? new DefaultNamingStrategy();

            GetJsonPropertyName = (name) => namingStrategy.GetPropertyName(name, false);
        }
        /// <summary>
        /// Configures <see cref="JsonSerializerOptions"/> to serialize <see cref="IPropertyContainer"/>.
        /// </summary>
        /// <param name="options"><see cref="JsonSerializerOptions"/> instance.</param>
        /// <param name="configureMetadataJson">Configure Metadata Json serialization.</param>
        /// <returns>The same options.</returns>
        public static JsonSerializerOptions ConfigureJsonForPropertyContainers(
            this JsonSerializerOptions options,
            Action <MetadataJsonSerializationOptions>?configureMetadataJson = null)
        {
            bool added = options.Converters.Any(converter => converter.GetType() == typeof(PropertyContainerConverterFactory));

            if (!added)
            {
                MetadataJsonSerializationOptions?metadataJsonSerializationOptions = null;

                if (configureMetadataJson != null)
                {
                    metadataJsonSerializationOptions = new MetadataJsonSerializationOptions();
                    configureMetadataJson(metadataJsonSerializationOptions);
                }

                options.Converters.Add(new PropertyContainerConverterFactory(metadataJsonSerializationOptions));
            }

            return(options);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PropertyContainerConverter{TPropertyContainer}"/> class.
 /// </summary>
 /// <param name="options">Metadata json serializer options.</param>
 public PropertyContainerConverter(MetadataJsonSerializationOptions?options = null)
 {
     OutputType = typeof(TPropertyContainer);
     Options    = options.Copy();
 }
Exemplo n.º 4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MetadataSchemaProviderConverter"/> class.
 /// </summary>
 /// <param name="options">Serialization options.</param>
 public MetadataSchemaProviderConverter(MetadataJsonSerializationOptions options)
 {
     Options = options.Copy();
 }
Exemplo n.º 5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PropertyContainerConverter"/> class.
 /// </summary>
 /// <param name="options">Metadata json serializer options.</param>
 public PropertyContainerConverter(MetadataJsonSerializationOptions?options = null)
 {
     Options = options.Copy();
 }