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 

Вот как получить номер предупреждения / ошибки в первую очередь:

  1. Перестрой свой проект.
  2. Перейти к окну вывода.
  3. Посмотрите на строку предупреждения / ошибки, которую вы хотите подавить.
    Например:
    C:\Users\Username\Documents\Visual Studio 2010\Projects\Projectname\Classname.cs(203,7): warning CS0162: Unreachable code detected
  4. Скопировать номер части после CS ".
  5. Тогда продолжай, как говорит Джон Скит.

(Лучше всегда действовать, как говорит Джон Скит...)

Вы ищете #pragma предупреждение отключить директиву

По сути, вы добавляете следующую команду над сайтом вызовов в файле.cs.

#pragma warning disable 612
SomeMethodCall

612 - это идентификатор сообщения об ошибке для вызова устаревших методов

Другие вопросы по тегам