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

Я написал собственный метод проверки с использованием атрибута customvalidation в C # 4.0. Я использую код для Entity Framework 4.1. Однако пользовательский метод атрибута проверки является статическим. Как я могу проверить некоторую другую логику в моем классе, ссылаясь на другие нестатические поля в том же классе.

т.е.

public class Foo
{
   [CustomerValidation(typeOf(Foo), "ValidatePoints"]
   public string Points { get; set; }

   public string AdvancedPoints { get; set;}

   public static ValidationResult ValidatePoints(string _Name)
   {
       if (_Name != AdvancedPoints) //Note that AdvancedPoints here is non-static and                                         should not be here. but i want to know how i can achieve this. 
       {     
           return ValidationResult.Success;
       }
       else
           return new ValidationResult("Wrong entry");
}

}

Ответы [ 2 ]

0 голосов
/ 18 декабря 2011

вы можете использовать класс со статическим методом в нем. И использовать этот метод для проверки класса следующим образом:

 [CustomValidation(typeof(Validate_Foo), "Validate")]
 public class Foo 

и

 public class Validate_Foo
{
    public static ValidationResult Validate(Foo obj, ValidationContext vc)
    {
         return ValidationResult.Success;
         //or return new ValidationResult("Error"); 
    }
}
0 голосов
/ 03 августа 2011

Возможно, вы захотите взглянуть на IValidatableObject

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.ivalidatableobject.aspx

Это позволяет вам добавить проверки класса или нескольких свойств для данного класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...