.NET WinForms и блок приложения для проверки корпоративных библиотек - PullRequest
0 голосов
/ 09 февраля 2009

У меня есть TextBox, значение которого передается свойству int в объекте после анализа в int.

Когда я использую ValidationProvider, этот шаг преобразования игнорируется при проверке, и я получаю сообщение об ошибке, говорящее, что я не могу сохранить строку в int32.

Я могу исправить это, создав в своем объекте строковое свойство, которое действует как мост между значением текстового поля в форме и значением int в моем бизнес-объекте, но мне не нравится этот подход, потому что для этого потребуется изменить мои доменные объекты, чтобы слой проверки.

Как я могу проверить текстовое поле, которое сохраняет свое значение в int после преобразования, не создавая свойство моста в объекте домена?

Ответы [ 2 ]

1 голос
/ 10 февраля 2009

Я нашел решение.

Преобразование строки в int выполняется автоматически, но оно не выполняется, если текстовое поле оставлено пустым.

Я использовал обработчик ValueConvert в ValidationProvider, чтобы исправить это, но я убежден, что это какая-то ошибка.

РЕДАКТИРОВАТЬ: событие ValueConvert не будет срабатывать, если в свойстве не существует Validator. Используйте [ObjectValidator] в качестве пустышки для запуска события ValueConvert, когда ожидаются входные преобразования.

0 голосов
/ 10 февраля 2009

Другое «лучшее» решение - добавить TypeConversionValidator в мою собственность.

Пример атрибута: [TypeConversionValidator (typeof (int))] *

РЕДАКТИРОВАТЬ: игнорировать это. Это не работает так, как я ожидал.

...