Детерминированный порядок оценки аннотаций данных? - PullRequest
1 голос
/ 18 ноября 2011

Я пишу модель представления, полученную из ReactiveValidatedObject.Это позволяет мне использовать аннотации данных для запуска проверки в представлении, но я столкнулся с проблемой: правила проверки оцениваются в случайном порядке.

Например, если свойствообъявлено так (поле модели является десятичным, а валидатор метода просто делает decimal.TryParse и проверяет, является ли значение> = 0):

  private string abc;
  [ValidatesViaMethod(ErrorMessage = "Invalid", AllowNull = true]
  [Required(ErrorMessage = "Required")]
  public string Abc { /* ... */ }

У меня есть модульные тесты, которые проверяютповедение выглядит следующим образом:

  • Если поле не заполнено, ошибка должна быть «Обязательна».
  • Если в поле есть что-то, что не анализируется, ошибка должна быть «Invalid ".

Иногда я что-то изменяю в другом файле, запускаю все тесты, и этот провал.Смена порядка атрибутов в объявлении свойства исправляет тест.

Есть ли способ указать, в каком порядке эти атрибуты применяются?

1 Ответ

1 голос
/ 18 ноября 2011

Я не верю, что есть способ указать порядок, это порядок, в котором Reflection возвращает их. Возможно, вам придется настроить ваш IsAbcValid для обнаружения нулевого значения и (неправильно) пометить его как действительный.

...