Атрибут проверки на модели WebApi? - PullRequest
0 голосов
/ 03 мая 2019

Я хотел бы знать, возможно ли добавить атрибут проверки к свойству входной модели. Свойство является перечислением, и моя цель состоит в том, чтобы ограничить перечисляемые значения рассматриваемым свойством.

Это возможно?

Вот что я хотел бы сделать:

 public enum EnumExample
{
    A,
    B,
    C,
    D,
    E,
    F,
    G
}

В первой модели я хотел бы вставить для свойства TypeClass только значения A, B, C

public class GetABC
{
    ***[Range (A,B,C)]***
    public EnumExample TypeClass { get; set; }
}

пока я бы хотел вставить для свойства TypeClass1 только значения E, F, G

public class GetEFG
{
    ***[Range (E,F,G)]***
    public EnumExample TypeClass1 { get; set; }
}

Это возможно?

Какой атрибут можно использовать?

Только с Regex?

Заранее спасибо.

1 Ответ

0 голосов
/ 03 мая 2019

Вы можете добавить свой собственный валидатор пользовательских атрибутов и, возможно, проверить значения таким образом?

Что-то вроде:

public class EnumValidatorAttribute : ValidationAttribute
    {
        private readonly string[] _values;

        public EnumValidatorAttribute(params string[] values)
        {
            _values = values;
        }

        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (_values.Contains(value))
                return ValidationResult.Success;

            return new ValidationResult("Not a valid Enum value");
        }
    }

Тогда используйте как:

[EnumValidator("Value1", "Value2")]
public myEnum MyEnumProperty {get;set;}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...