Обработка зависимостей свойств - PullRequest
1 голос
/ 10 сентября 2010

При разработке класса (в C #, но я предполагаю, что этот вопрос несколько зависит от языка), как правильно обращаться с зависимостями между свойствами?

Например, где я хочу создать свойство B, значение которогокаким-то образом получается из значения свойства A. Свойство B не определено и не должно вызываться, если свойство A не было установлено.Бросок исключения в геттер B, если A не был установлен, вряд ли кажется элегантным способом справиться с этим.Я просто не хочу возвращать какое-либо значение по умолчанию из свойства B.

Один из способов - принудительно инициализировать A через конструктор, но давайте предположим, что требуется конструктор по умолчанию без аргументов, поэтому это не так.вариант.

1 Ответ

2 голосов
/ 10 сентября 2010

Бросок InvalidOperationException в этом случае мне кажется вполне уместным:

InvalidOperationException используется в случаи, когда неспособность вызвать Метод вызван причинами, отличными от неверные аргументы

Теперь, если говорить о методе , а не о свойстве, но я думаю, что все еще в порядке.

Если вам нужен пример из фреймворка, то указывается IEnumerator.Current для выброса InvalidOperationException, если он вызывается перед первым элементом или после последнего. (Сгенерированные C # итераторы на самом деле этого не делают, но это другой вопрос:)

Похоже, это ошибка в вызывающем коде, чтобы сделать это ... они неправильно используют объект. Правильный способ указать на ошибку - это сгенерировать исключение.

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