in src/Json.Schema.ToDotNet/DataModelGenerator.cs [360:403]
private void GenerateAdditionalTypeFromEnumHint(EnumHint enumHint, JsonSchema schema)
{
if (enumHint.AllowMemberCountMismatch == false
&& enumHint.MemberNames != null
&& schema.Enum != null
&& enumHint.MemberNames.Length != schema.Enum.Count)
{
throw Error.CreateException(
Resources.ErrorMismatchedEnumCount,
nameof(EnumHint),
enumHint.TypeName,
enumHint.MemberNames.Length,
schema.Enum.Count);
}
var enumNames = new List<string>();
if (!string.IsNullOrWhiteSpace(enumHint.ZeroValueName))
{
enumNames.Add(enumHint.ZeroValueName);
}
if (enumHint.MemberNames != null)
{
enumNames.AddRange(enumHint.MemberNames);
}
else
{
enumNames.AddRange(schema.Enum.Select(e => e.ToString()));
}
var enumTypeSchema = new JsonSchema
{
Description = enumHint.Description ?? schema.Description,
Enum = enumNames.Cast<object>().ToList()
};
var generator = new EnumGenerator(enumTypeSchema, _settings.TypeNameSuffix, _settings.HintDictionary);
_pathToFileContentsDictionary[enumHint.TypeName + _settings.TypeNameSuffix] =
generator.Generate(
_settings.SuffixedNamespaceName,
enumHint.TypeName,
_settings.CopyrightNotice,
enumTypeSchema.Description);
}