Reputation: 77329
I'm using the Obsolete
attribute (as just suggested by fellow programmers) to show a warning if a certain method is used.
Is there a way to suppress the warning similar to CodeAnalysis' SuppressMessage
at points where the use is justified?
This needs to work for [Obsolete("Some message")]
which generates warning 618 and the plain [Obsolete]
attribute with no message which generates warning 612.
Upvotes: 236
Views: 107392
Reputation: 4026
Here's how to get the warning/error number in the first place:
C:\Users\Username\Documents\Visual Studio 2010\Projects\Projectname\Classname.cs(203,7): warning CS
0162
: Unreachable code detected
CS
".(Better always proceed as Jon Skeet says…)
Upvotes: 21
Reputation: 56457
The intent is to disable the warning for obsolete usage, regardless of whether the construct is marked with [Obsolete]
or [Obsolete("Message")]
. So use both CS0612 and CS0618:
#pragma warning disable 612, 618
...
#pragma warning restore 612, 618
Upvotes: 152
Reputation: 1499740
Use #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 the warning afterwards so that you won't miss "bad" calls.
Upvotes: 293
Reputation: 754545
You're looking for the #pragma
warning disable directive
Essentially you add the following command above the call site in the .cs file.
#pragma warning disable 612
SomeMethodCall
612 is the error message ID for calling obsolete methods
Upvotes: 10