System.ArgumentException при использовании RangeValidator - PullRequest
1 голос
/ 28 января 2010

Итак, в классе MyBO у меня есть:

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

И в классе тестирования:

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

Почему я получил: Метод теста TestProject.CatedraBOTest.x1Test сгенерировал исключение:System.ArgumentException: объект должен иметь тип Int32 ..?

Я действительно не понимаю.Если я удаляю RangeValidator, все работает нормально.Пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 28 января 2010

В дополнение к тому, что сказал @Jason, посмотрите на this , где none конструктора принимает байт как параметр для проверки диапазона.

Сказав это, вы можете использовать this , если вы все еще хотите сравнить его с байтом. В этом случае это может выглядеть как

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

Обратите внимание, что строка выше написана на основе того, что я мог видеть и интерпретировать в документации. Я не написал код для проверки, если это работает.

Это просто, чтобы дать вам представление о том, как все может работать.

РЕДАКТИРОВАТЬ: альтернативой может быть изменение типа свойства с байта на int.

0 голосов
/ 28 января 2010

Я предполагаю, что атрибут RangeValidator не работает со значениями BYTE?

Если вы посмотрите на документацию , там написано:

Валидатор диапазона может использоваться с любой тип, который реализует IComparable интерфейс

Я не верю, что БАЙТ - один из тех типов?

РЕДАКТИРОВАТЬ: Я исправлен, тип данных BYTE реализует IComparable (только что отмечен в Reflector), поэтому я не уверен, в чем проблема. Я буду продолжать искать .....

РЕДАКТИРОВАТЬ: Найдено это , что может помочь.

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