Проверка аннотаций данных внутри класса: результаты TryValidateObject всегда пустые - PullRequest
2 голосов
/ 14 марта 2011

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

Ниже приведен упрощенный пример того, чего я пытаюсь достичь. Коллекция результатов, переданная в TryValidateObject, всегда имеет счетчик 0.

Что я делаю не так?

public class CreateBuskerMemberCommand : Command
{
   [Required]
   public string SomeValue;

   public string SomeOtherValue;

   public CreateBuskerMemberCommand ( ..)
   {
      // pass values to fields.. 
   }


   public void Execute()
   {

       // force error for testing purpose
       SomeValue = null;
       ValidationContext context = new ValidationContext(this, null, null);
       List<ValidationResult> results = new List<ValidationResult>();

       System.ComponentModel.DataAnnotations.Validator.TryValidateObject(this, context,   results);

      // results count = 0
   }
}

1 Ответ

1 голос
/ 16 марта 2011

Очень простое решение: Атрибуты должны быть в свойстве, а не в поле. Это сделало трюк

   [Required]
   public string SomeValue {get;set;}
...