NJsonSchema: Если я знаю, что поле в моей схеме может иметь только несколько конечных значений во время выполнения, могу ли я добавить это в мою логику проверки?

Взяв пример из их GitHub, если бы я знал, что во время выполнения First Name может быть ТОЛЬКО "Bob" ИЛИ "Bill", могу ли я проверить это?

public class Person
{
    [Required]
    public string FirstName { get; set; }

    public string MiddleName { get; set; }

    [Required]
    public string LastName { get; set; }

    public Gender Gender { get; set; }

    [Range(2, 5)]
    public int NumberWithRange { get; set; }

    public DateTime Birthday { get; set; }

    public Company Company { get; set; }

    public Collection<Car> Cars { get; set; }
}

2 ответа

Просто создайте свой собственный атрибут:

public class MustBeBobOrBillAttribute : ValidationAttribute 
{
   override bool IsValid(object value) {
        if (value == null) {
            return false;
        }
        var strValue = (string)value;
        return (strValue == "Bob" || strValue == "Bill");
   }
}

Затем вы можете добавить его в модель:

public class Person
{
    [Required]
    [MustBeBillOrBob]
    public string FirstName { get; set; }

    ...
}

Если строка может иметь только некоторые заданные предопределенные значения, то она должна быть описана с помощью перечисления схемы JSON... здесь я бы реализовал это с помощью обработчика настраиваемой схемы (ISchemaProcessor), который добавляет информацию перечисления и настраиваемый атрибут для ее применения.,

https://github.com/RSuter/NJsonSchema/wiki/Schema-Processors

Другие вопросы по тегам