Проверка частных свойств с помощью атрибутов ValidationAttributes в .NET 4

У меня есть классы, которые получают частные свойства, установленные через конструктор.

Затем я хотел бы запустить следующий код из базового класса, чтобы проверить, в порядке ли переданные значения: ValidationContext context = new ValidationContext (this, null, null);

ValidationResults = новый список ();

if (!System.ComponentModel.DataAnnotations.Validator.TryValidateObject(this, context, ValidationResults, true))
{
    this.Success = false;
    this.StatusCode = CommandStatusCode.ValidationFailed;
    return false;
}
return true;

Проблема в том, что TryValidateObject проверяет только общедоступные свойства. Есть ли способ проверить частную собственность?


person AyKarsi    schedule 14.04.2011    source источник


Ответы (1)


Я бы использовал кодовые контракты для аргументов вашего конструктора.

person GregC    schedule 14.04.2011
comment
Я ничего не делал с контрактами кода, да, но выглядит многообещающе ... Есть ли простой способ повторно использовать ValidationAttributes, которые я все уже закодировал, для контрактов кода? - person AyKarsi; 14.04.2011
comment
@AyKarsi: Контракты кода условно компилируются и потенциально даже статически проверяются компилятором. Атрибуты проверяются с помощью механизмов на основе отражения во время выполнения. У тебя есть спецификация? Если да, вы можете написать модульные тесты, контракты кода или их сочетание. - person GregC; 14.04.2011