C# - Selectively suppress custom Obsolete warnings

后端 未结 4 1709
小鲜肉
小鲜肉 2020-11-28 05:04

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

相关标签:
4条回答
  • 2020-11-28 05:11

    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 
    
    0 讨论(0)
  • 2020-11-28 05:17

    You're looking for the #pragma warning disable directive

    • http://msdn.microsoft.com/en-us/library/441722ys(VS.80).aspx

    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

    0 讨论(0)
  • 2020-11-28 05:23

    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.

    0 讨论(0)
  • 2020-11-28 05:31

    Here's how to get the warning/error number in the first place:

    1. Rebuild your project.
    2. Go to the Output window.
    3. Look up the line of the warning/error you want to suppress.
      For example:
      C:\Users\Username\Documents\Visual Studio 2010\Projects\Projectname\Classname.cs(203,7): warning CS0162: Unreachable code detected
    4. Copy the number part after "CS".
    5. Then proceed as Jon Skeet says.

    (Better always proceed as Jon Skeet says…)

    0 讨论(0)
提交回复
热议问题