Указанный метод CustomValidationAttribute не вызывается.

Я использую System.ComponentModel.DataAnnotations.CustomValidationAttribute для проверки одного из моих POCO-классов, и когда я пытаюсь выполнить модульное тестирование, он даже не вызывает метод проверки.

public class Foo
{
  [Required]
  public string SomethingRequired { get; set }
  [CustomValidation(typeof(Foo), "ValidateBar")]
  public int? Bar { get; set; }
  public string Fark { get; set; }

  public static ValidationResult ValidateBar(int? v, ValidationContext context) {
    var foo = context.ObjectInstance as Foo;
    if(!v.HasValue && String.IsNullOrWhiteSpace(foo.Fark)) {
      return new ValidationResult("Either Bar or Fark must have something in them.");
    }
    return ValidationResult.Success;
  }
}

, но когда я пытаюсь его проверить :

var foo = new Foo { 
  SomethingRequired = "okay"
};
var validationContext = new ValidationContext(foo, null, null);
var validationResults = new List<ValidationResult>();
bool isvalid = Validator.TryValidateObject(foo, validationContext, validationResults);
Assert.IsFalse(isvalid); //FAIL!!! It's valid when it shouldn't be!

, он даже не переходит к пользовательскому методу проверки. Что дает?

5
задан Ben Lesh 15 April 2012 в 19:09
поделиться