C# - выборочно подавить пользовательские устаревшие предупреждения
Я использую Obsolete
атрибут (как только что предложено другими программистами) для отображения предупреждения, если используется определенный метод.
Есть ли способ подавить предупреждение, подобное CodeAnalysis? SuppressMessage
в точках, где использование оправдано?
Спасибо!
РЕДАКТИРОВАТЬ
Это для [Obsolete("Some message")]
как мне нужно включить некоторые детали о предупреждении. Тем не мение, #pragma warning disable 612
больше не работает, когда я добавляю сообщение к голому [Obsolete]
атрибут...
РЕДАКТИРОВАТЬ 2
Найден правильный номер предупреждения - это 618, если у вас есть сообщение, следующее за устаревшим атрибутом.
Итак, чтобы сделать то, что я хочу сделать:
#pragma warning disable 618
а потом после звонка
#pragma warning restore 618
Спасибо Джареду Пару и Джону Скиту за то, что они указали мне правильное направление!
4 ответа
Использование #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");
}
}
Затем восстановите предупреждение, чтобы не пропустить "плохие" звонки.
Цель состоит в том, чтобы отключить предупреждение для устаревшего использования, независимо от того, помечена ли конструкция как [Obsolete]
или же [Obsolete("Message")]
, Поэтому используйте как CS0612, так и CS0618:
#pragma warning disable 612, 618
...
#pragma warning restore 612, 618
Вот как получить номер предупреждения / ошибки в первую очередь:
- Перестрой свой проект.
- Перейти к окну вывода.
- Посмотрите на строку предупреждения / ошибки, которую вы хотите подавить.
Например:C:\Users\Username\Documents\Visual Studio 2010\Projects\Projectname\Classname.cs(203,7): warning CS
0162
: Unreachable code detected
- Скопировать номер части после
CS
". - Тогда продолжай, как говорит Джон Скит.
(Лучше всегда действовать, как говорит Джон Скит...)
Вы ищете #pragma
предупреждение отключить директиву
По сути, вы добавляете следующую команду над сайтом вызовов в файле.cs.
#pragma warning disable 612
SomeMethodCall
612 - это идентификатор сообщения об ошибке для вызова устаревших методов