2009-06-09 12 views
170

Używam atrybutu Obsolete (jak zasugerowali inni programiści), aby wyświetlić ostrzeżenie, jeśli używana jest pewna metoda.C# - Selektywne tłumienie niestandardowych Przestarzałe ostrzeżenia

Czy istnieje sposób na zignorowanie ostrzeżenia podobnego do CodeAnalysis 'SuppressMessage w punktach, w których użycie jest uzasadnione?

Dziękujemy!

EDIT

To dla [Obsolete("Some message")] jak muszę zawierać szczegółowe informacje na temat ostrzeżenia. Jednak #pragma warning disable 612 nie działa już kiedyś dodać wiadomość gołym atrybutu [Obsolete] ...

EDIT 2

Znaleziono odpowiednią liczbę ostrzegawczy - Jest jeśli masz następujący komunikat przestarzały atrybut.

więc robić to, co chcę zrobić:

#pragma warning disable 618

a następnie po wywołaniu

#pragma warning restore 618

Dzięki Jared Par i Jon Skeet dla wskazujące mnie we właściwym kierunku !

Odpowiedz

208

Wpisz #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"); 
    } 
} 

Restore ostrzeżenie potem tak, że nie zabraknie "złych" połączeń.

+1

Działa to tylko wtedy, gdy nie przekazuję wiadomości z moim atrybutem Przestarzałe. Mam wiadomość podobną do poniższej: [Przestarzałe ("Dlatego nie należy tego używać - zamiast tego użyj XYZ.")]. Po umieszczeniu wiadomości, ostrzeżenie pragma wyłącza 612 przestaje działać i otrzymuję ostrzeżenia niezależnie. Czy zamiast tego potrzebuję innego identyfikatora błędu? – Alex

+1

Znaleziono - prawidłowy numer ostrzegawczy to 618, jeśli w atrybucie Przestarzałe jest komunikat. Dziękuję Ci! – Alex

+1

Goodo - dostosowałem swój przykład, aby to dopasować. –

8

Patrzysz na #pragma ostrzeżenie wyłączyć dyrektywę

Zasadniczo dodać następującą komendę nad miejscem połączenia w pliku .cs.

#pragma warning disable 612 
SomeMethodCall 

612 jest komunikat o błędzie Identyfikator nazywając przestarzałych metod

+0

Zadziała tylko jeśli nie daję wiadomość z moim Przestarzałe atrybutu. Mam wiadomość podobną do poniższej: [Przestarzałe ("Dlatego nie należy tego używać - zamiast tego użyj XYZ.")]. Po umieszczeniu wiadomości, ostrzeżenie pragma wyłącza 612 przestaje działać i otrzymuję ostrzeżenia niezależnie. Czy zamiast tego potrzebuję innego identyfikatora błędu? – Alex

+2

Znaleziono - prawidłowy numer ostrzegawczy to 618, jeśli w atrybucie Przestarzałe jest komunikat. – Alex

96

The zamiarem jest, aby wyłączyć ostrzeżenia na zbędne użycia, niezależnie od tego, czy konstrukcja jest oznaczony [Obsolete] lub [Obsolete("Message")]. Więc używać zarówno CS0612iCS0618:

#pragma warning disable 612, 618 

... 

#pragma warning restore 612, 618 
+1

Dzięki. Pomogło to :) – sandyiscool

+2

+1 za podanie zarówno 612, jak i 618. –

+2

Należy również pamiętać, że ostrzeżenia nie występują, jeśli przestarzałe użycie jest w klasie, która sama jest oznaczona jako przestarzała. – redcalx

15

Oto jak uzyskać numer ostrzeżenia/błędu w pierwszej kolejności:

  1. Rebuild projektu.
  2. Przejdź do okna Output.
  3. Sprawdź linię ostrzeżenia/błędu, które chcesz ukryć.
    Na przykład:
    C:\Users\Username\Documents\Visual Studio 2010\Projects\Projectname\Classname.cs(203,7): warning CS0162: Unreachable code detected
  4. Skopiować numer części po "CS".
  5. Następnie kontynuuj jako Jon Skeet says.

(Better zawsze postępować jak Jon Skeet mówi ...)

Powiązane problemy