2010-01-28 4 views
1

Ainsi, dans une classe MyBO j'ai:System.ArgumentException lors de l'utilisation RangeValidator

[NotNullValidator(MessageTemplate = "Cannot be null!")] 
    [RangeValidator(0, RangeBoundaryType.Inclusive, 20, RangeBoundaryType.Inclusive, Ruleset="validate_x1")] 
    public byte x1 
    { 
     get; 
     set; 
    } 

Et dans une classe de test:

 [TestMethod()] 
    public void x1Test() 
    { 
     MyBO target = new MyBO() { x1 = (byte)20 }; 
     ValidationResults vr = Validation.Validate(target, "validate_x1"); 
     Assert.IsTrue(vr.IsValid); 
    } 

Pourquoi je suis arrivé: Méthode d'essai TestProject.CatedraBOTest.x1Test jeté exception: System.ArgumentException: l'objet doit être de type Int32 ..?

Je ne comprends vraiment pas. Si je retire le RangeValidator, tout fonctionne correctement. S'il vous plaît aider.

Répondre

2

En ajoutant à ce que @Jason a dit, regardez thisaucun du constructeur accepte octet comme paramètre pour la validation de la plage.

Cela dit, vous pouvez utiliser this si vous voulez toujours le comparer avec octet. Dans ce cas, il pourrait ressembler à

[RangeValidator(typeof(Byte), "0", RangeBoundaryType.Inclusive, "20", RangeBoundaryType.Inclusive)] 

Notez que la ligne ci-dessus est écrit en fonction de ce que je pouvais voir & interpréter de la documentation. Je n'ai pas écrit de code pour tester si cela fonctionne.

Ceci est juste pour vous donner une idée de la façon dont les choses pourraient fonctionner.

EDIT: L'alternative pourrait être de changer le type de la propriété de l'octet int.

+0

A travaillé, merci! ;) – qwerty

0

Je devine que l'attribut RangeValidator ne fonctionne pas sur les valeurs BYTE?

Si vous regardez le documentation il est dit:

La gamme Validator peut être utilisé avec tout type qui implémente l'interface IComparable

Je ne crois pas que BYTE est un de ces types?

EDIT: Je reconnais mon erreur, le type de données BYTE n'implémente IComparable (juste vérifié dans le réflecteur), donc je ne suis pas sûr maintenant ce que la question est. Je vais continuer à chercher .....

EDIT: Trouvé this qui pourrait aider.

+0

Ok, merci. Je ne sais pas ce qui provoque l'erreur .. – qwerty

Questions connexes