2010-03-25 7 views

Répondre

1

Utilisez un validateur personnalisé.

[HasSelfValidation] 
public class ValidateMe { 


    [SelfValidation] 
    public void ValidateFieldNotNul(ValidationResults validationResults) 
    { 
     .. start psudo code 
     if(xor) 
      validationResults.AddResult(new ValidationResult("One must not be null",...)); 
    } 

} 
0

La validation Application Block a une PropertyComparisonValidator qui vous permettra de comparer une propriété avec un autre. Malheureusement, ce validateur ne permet qu'un ComparisonType de: Equal, NotEqual, GreaterThan, GreaterThanEqual, LessThan, LessThanEqual donc cela ne vous aide pas vraiment.

Je pense que vous avez 2 options:

  • auto validation
  • sur mesure Validator

auto validation (indiqué par @Nix) est probablement le plus facile, mais, il faudrait que cela soit pour réimplémentée chaque scénario où vous avez cette exigence (au moins pour mettre les hameçons à appeler une méthode commune).

La création d'un custom validator donnerait un code qui pourrait être ajouté à la configuration ou attribué directement aux entités et qui pourrait facilement être réutilisé.

Un validateur personnalisé sera certainement plus de travail, mais peut-être en vaut la peine si vous avez besoin de la réutiliser (il peut être réutilisé entre les applications, par exemple) ou préférez ce design.