Есть ли способ остановить вызов метода во время компиляции? - PullRequest
7 голосов
/ 29 января 2010

У меня есть несколько классов, у которых есть несколько методов, которые я не хочу там использовать, но они существуют просто потому, что они нужны XML Serializer. Есть ли способ генерировать ошибки / предупреждения во время компиляции, если они вызываются из кода пользователя?

Мне известно, что я могу реализовать IXmlSerializable, и я также знаю, что могу разделить классы на чисто классы хранения данных, однако я не задаю вопрос о том, как я должен проектировать такую ​​систему, я просто спрашивая, есть ли способ генерировать ошибки / предупреждения во время компиляции, если они вызываются чем-то, что не является сериализатором XML ...

Ответы [ 3 ]

14 голосов
/ 29 января 2010

Вы можете добавить

[Obsolete]

к методу. Свойство IsError ObsoleteAttribute определяет, генерируется ли ошибка или предупреждение, и вы также можете предоставить пояснительное сообщение.

5 голосов
/ 29 января 2010

Вы можете украсить элементы с помощью ObsoleteAttribute . Его назначение немного иное, но при вызове из пользовательского кода он генерирует предупреждения (или ошибки) компилятора.

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

Вы можете скрыть методы от пользователей intellisense, используя атрибут [EditorBrowsable] , и от дизайнера свойств, используя [Browsable] , атрибут.

Я не рекомендую использовать [ObsoleteAttribute], потому что он передает другое значение тому, каково состояние метода на самом деле. Вместо этого используйте комментарий, указывающий, что метод не должен использоваться из кода пользователя.

Также имейте в виду, что многие пользователи компилируют свой код с предупреждениями об угрозах в виде ошибок , что делает невозможным компиляцию действительного кода, в данном случае.


...