У меня есть следующая модель:
public class ViewDataItem
{
public string viewName { get; set; }
public UpdateIndicator updateIndicator { get; set; }
}
Со следующим перечислением:
public enum UpdateIndicator
{
Original,
Update,
Delete
}
И следующий валидатор:
public class ViewValidator : AbstractValidator<ViewDataItem>
{
public ViewValidator()
{
RuleFor(x => x.viewName).NotEmpty().WithMessage("View name must be specified");
RuleFor(x => x.updateIndicator).SetValidator(new UpdateIndicatorEnumValidator<UpdateIndicator>());
}
}
public class UpdateIndicatorEnumValidator<T> : PropertyValidator
{
public UpdateIndicatorEnumValidator() : base("Invalid update indicator") {}
protected override bool IsValid(PropertyValidatorContext context)
{
UpdateIndicator enumVal = (UpdateIndicator)Enum.Parse(typeof(UpdateIndicator), context.PropertyValue.ToString());
if (!Enum.IsDefined(typeof(UpdateIndicator), enumVal))
return false;
return true;
}
}
Код находится в WebAPI, который получает данные через JSON, десериализует их в объект и затем проверяет, но по какой-то причине я могу отправлять все, что захочу, в updateIndicator
, пока я не ввожу целочисленное значение больше, чем max в перечислении (т.е. 1,2 или 3 работают нормально, но 7 вызовет ошибку).
Как я могу получить это, чтобы проверить ввод данных, которые я получаю, чтобы увидеть, действительно ли это значение находится в Enum?