Я строю API / Framework в C #, как я должен возвращать сообщения об ошибках валидации, когда свойства имеют недопустимое значение? - PullRequest
1 голос
/ 09 октября 2010

Я создаю API в C #, как я должен возвращать сообщения об ошибках валидации, когда для свойств заданы недопустимые значения?Должен ли я бросить исключения или сделать что-то еще?Что вы порекомендуете?Я мог бы использовать класс AggregateException из параллельной библиотеки задач, чтобы я мог выдавать больше, чем по одному за раз.Каковы лучшие практики?

Ответы [ 4 ]

3 голосов
/ 09 октября 2010

Наилучшим подходом было бы создание ArgumentException в каждом установщике свойств, когда для него установлено недопустимое значение.

0 голосов
/ 20 апреля 2011

Если вы используете более поздние версии .NET, и особенно если вы собираетесь работать с WPF / Silverlight, то реализация IDataErrorInfo может быть лучшим решением. Карл Шифлетт написал хорошую статью о плюсах и минусах использования исключений в установщике свойств и реализации IDataErrorInfo.

Если у вас есть правила проверки, которые зависит от одного или нескольких свойств ценности, разработчики теперь должны написать код для установки значений свойств в определенный порядок, чтобы избежать исключения быть брошенным Это сумасшедший требование и противоречит всем .NET проектная документация класса. Ты можешь воображение, чтобы обернуть каждый кусок код, который устанавливает свойство с попыткой поймать блок. Опять же, как насчет LINQ запросы, которые связывают, чтобы заполнить объекты и ненужные исключения будучи брошенным установщиками собственности. Это делает написание обслуживаемого кода НАМНОГО сложнее и с нулевым сроком окупаемости. Когда код изменяется со временем, поле добавлено, мы должны учитывать бесполезная обработка исключений и быть познаватель порядка, в котором вызывающие или изменяющие свойства свойства.

0 голосов
/ 09 октября 2010

Используйте структуру проверки, такую ​​как Блок приложения проверки библиотеки предприятия , или вы можете создать свою собственную. Вместо создания исключения для каждой ошибки проверки сообщайте обо всех ошибках с одним исключением.

0 голосов
/ 09 октября 2010

Я бы сказал, что это зависит от собственности.Другой автор рекомендовал ArgumentException, но я чувствую, что это более конкретно относится к недопустимым аргументам, передаваемым методу.Я бы, вероятно, создал свои собственные исключения (наследуя ApplicationExecption) и сделал бы их специфичными для моих свойств, таких как:

PropertyNumericRangeException (числовое свойство с диапазоном 0-100, скажем)

PropertyStringLengthException (ограничивая строкудлина)

Я полагаю, что вы можете расширить AggregateException и для этой цели, но в значительной степени небо здесь предел ...

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