DiscriminatorSchemaProcessor
using NJsonSchema.Converters;
using System;
using System.Runtime.CompilerServices;
namespace NJsonSchema.Generation.SchemaProcessors
{
    [System.Runtime.CompilerServices.NullableContext(1)]
    [System.Runtime.CompilerServices.Nullable(0)]
    public class DiscriminatorSchemaProcessor : ISchemaProcessor
    {
        public Type BaseType { get; }
        public string Discriminator { get; }
        public DiscriminatorSchemaProcessor(Type baseType)
            : this(baseType, JsonInheritanceConverterAttribute.DefaultDiscriminatorName)
        {
        }
        public DiscriminatorSchemaProcessor(Type baseType, string discriminator)
        {
            BaseType = baseType;
            Discriminator = discriminator;
        }
        public void Process(SchemaProcessorContext context)
        {
            if (context.ContextualType.get_OriginalType() == BaseType) {
                JsonSchema schema = context.Schema;
                schema.Discriminator = Discriminator;
                schema.Properties[Discriminator] = new JsonSchemaProperty {
                    Type = JsonObjectType.String,
                    IsRequired = true
                };
            }
        }
    }
}