Есть ли обратное System.Diagnostics.ConditionalAttribute? - PullRequest
7 голосов
/ 25 ноября 2008

Существует ли аналогичный условно-отсутствующий атрибут или, возможно, есть способ использовать атрибут «Условно», чтобы включить метод, только если этот символ не определен?

Я ищу что-то, что работает так:

[Conditional("!SILVERLIGHT")]
private void DoStuffThatSilverlightCant() {...}

Такой, что метод не будет включен, если символ SILVERLIGHT существует.

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

1 Ответ

8 голосов
/ 25 ноября 2008

Обновление: Следующий фрагмент кода работает только в том случае, если в каждом вызывающем файле есть #if, что не очень удобно.

#if !SILVERLIGHT
#define NOT_SILVERLIGHT
#endif

[Conditional("NOT_SILVERLIGHT")]
private void DoStuffThatSilverlightCant() {...}

Что можно сделать, однако, это иметь конфигурацию сборки для любой используемой вами платформы, которая будет / определять необходимый символ (в данном случае NOT_SILVERLIGHT).

...