C # - выборочно подавить пользовательские устаревшие предупреждения - PullRequest
199 голосов
/ 09 июня 2009

Я использую атрибут Obsolete (как это было предложено другими программистами), чтобы показать предупреждение, если используется определенный метод.

Есть ли способ подавить предупреждение, подобное CodeAnalysis 'SuppressMessage в точках, где использование оправдано?

Спасибо!

EDIT

Это для [Obsolete("Some message")], так как мне нужно включить некоторые подробности о предупреждении. Однако #pragma warning disable 612 больше не работает, когда я добавляю сообщение в атрибут [Obsolete] naked ...

РЕДАКТИРОВАТЬ 2

Найден правильный номер предупреждения - это 618 , если у вас есть сообщение после устаревшего атрибута.

Итак, чтобы делать то, что я хочу сделать:

#pragma warning disable 618

а потом после звонка

#pragma warning restore 618

Спасибо Джареду Пару и Джону Скиту за то, что они указали мне правильное направление!

Ответы [ 4 ]

241 голосов
/ 09 июня 2009

Использование #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");
    }
}

Восстановите предупреждение, чтобы не пропустить «плохие» звонки.

122 голосов
/ 11 марта 2011

Цель - отключить предупреждение для устаревшего использования независимо от того, помечена ли конструкция как [Obsolete] или [Obsolete("Message")]. Так что используйте и CS0612 и CS0618 :

#pragma warning disable 612, 618 

...

#pragma warning restore 612, 618 
18 голосов
/ 17 марта 2012

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

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

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

9 голосов
/ 09 июня 2009

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

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

#pragma warning disable 612
SomeMethodCall

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

...