С# - выборочное подавление пользовательских устаревших предупреждений
Я использую атрибут Obsolete
(как это было предложено другими программистами), чтобы показать предупреждение, если используется определенный метод.
Есть ли способ подавить предупреждение, подобное CodeAnalysis 'SuppressMessage
, в точках, где использование оправдано?
Спасибо!
ИЗМЕНИТЬ
Это для [Obsolete("Some message")]
, поскольку мне нужно включить некоторые сведения об этом предупреждении. Тем не менее, #pragma warning disable 612
больше не работает, как только я добавляю сообщение в открытый атрибут [Obsolete]
...
РЕДАКТИРОВАТЬ 2
Найден правильный номер предупреждения - 618, если у вас есть сообщение, следующее за устаревшим атрибутом.
Итак, чтобы сделать то, что я хочу сделать:
#pragma warning disable 618
а затем после вызова
#pragma warning restore 618
Спасибо Джаред Пар и Джон Скит за то, что указали мне в правильном направлении!
Ответы
Ответ 1
Используйте #pragma warning disable
:
using System;
class Test
{
[Obsolete("Message")]
static void Foo(string x)
{
}
static void Main(string[] args)
{
#pragma warning disable 0618
// This one is okay
Foo("Good");
#pragma warning restore 0618
// This call is bad
Foo("Bad");
}
}
Восстановите предупреждение после этого, чтобы вы не пропустили "плохие" вызовы.
Ответ 2
Цель состоит в том, чтобы отключить предупреждение для устаревшего использования, независимо от того, отмечена ли конструкция с помощью [Obsolete]
или [Obsolete("Message")]
. Поэтому используйте CS0612 и CS0618:
#pragma warning disable 612, 618
...
#pragma warning restore 612, 618
Ответ 3
Здесь как получить номер предупреждения/ошибки:
- Восстановите свой проект.
- Перейдите в окно Выход.
- Посмотрите на строку предупреждения/ошибки, которую вы хотите подавить.
Например:
C:\Users\Username\Documents\Visual Studio 2010\Projects\Projectname\Classname.cs(203,7): warning CS
0162
: Unreachable code detected
- Скопируйте номер части после "
CS
".
- Затем продолжайте, как говорит Jon Skeet .
(Лучше всегда действовать как Jon Skeet говорит...)
Ответ 4
Вы ищете директиву #pragma
disable disable
По существу, вы добавляете следующую команду над сайтом вызова в файле .cs.
#pragma warning disable 612
SomeMethodCall
612 - это идентификатор сообщения об ошибке для вызова устаревших методов