csharp-netcore.AbstractOpenAPISchema.mustache Maven / Gradle / Ivy
{{>partial_header}}
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
namespace {{packageName}}.{{modelPackage}}
{
///
/// Abstract base class for oneOf, anyOf schemas in the OpenAPI specification
///
{{>visibility}} abstract partial class AbstractOpenAPISchema
{
///
/// Custom JSON serializer
///
static public readonly JsonSerializerSettings SerializerSettings = new JsonSerializerSettings
{
// OpenAPI generated types generally hide default constructors.
ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor,
MissingMemberHandling = MissingMemberHandling.Error,
ContractResolver = new DefaultContractResolver
{
NamingStrategy = new CamelCaseNamingStrategy
{
OverrideSpecifiedNames = false
}
}
};
///
/// Custom JSON serializer for objects with additional properties
///
static public readonly JsonSerializerSettings AdditionalPropertiesSerializerSettings = new JsonSerializerSettings
{
// OpenAPI generated types generally hide default constructors.
ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor,
MissingMemberHandling = MissingMemberHandling.Ignore,
ContractResolver = new DefaultContractResolver
{
NamingStrategy = new CamelCaseNamingStrategy
{
OverrideSpecifiedNames = false
}
}
};
///
/// Gets or Sets the actual instance
///
public abstract Object ActualInstance { get; set; }
///
/// Gets or Sets IsNullable to indicate whether the instance is nullable
///
public bool IsNullable { get; protected set; }
///
/// Gets or Sets the schema type, which can be either `oneOf` or `anyOf`
///
public string SchemaType { get; protected set; }
///
/// Converts the instance into JSON string.
///
public abstract string ToJson();
}
}