Odin.System.StringEnum, part of the OrDinary INfrastructure libraries, provides enum-like behaviour for a set of string values via StringEnum, as well as a useful StringEnumMemberAttribute.
Create your string 'enum' class by inheriting from StringEnum and adding public string constant members.
public class LoaderTypes : StringEnum<LoaderTypes>
{
public const string File = "FILE";
public const string DynamicSql = "DYNAMIC-SQL";
} if (loaderOptions.LoaderType == LoaderTypes.DynamicSql)
... bool memberExists = LoaderTypes.HasValue("CUSTOM"); // returns false string message = $"Valid members are: {string.Join(" | ", LoaderTypes.Values)}" public record LoaderEditModel : IValidatableObject
{
[Required(AllowEmptyStrings = false)]
[StringEnumMember<LoaderTypes>]
public required string Loader { get; set; }
...
}