Selectively suppress custom Obsolete warnings

c#, visual-studio-2008

Solution

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.

Problem

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.

Original source

Related problems