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