С# - выборочное подавление пользовательских устаревших предупреждений

Я использую атрибут 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 - это идентификатор сообщения об ошибке для вызова устаревших методов