c# - 如果在类外调用方法,如何生成编译器警告?

标签 c# .net

有没有一种方法可以在类外部使用方法时生成编译器警告,而在类内部使用则不会?

原因:类有一些基本行为可以在除少数方法重载情况外的所有情况下提前完成。这个想法是说,这样做很好,但您需要了解有关此类如何工作的一些事情。

最佳答案

一种方法是使用#pragma 指令。

在您使用“原始”方法的类中,在顶部添加以下行:

#pragma warning disable 0612

使用 [Obsolete()] 属性标记您的“原始”方法。

只要您的类是文件中唯一使用 pragma 指令声明的类,对该类中的原始方法的任何调用都不会引发编译器警告。从其他类(文件)发出的调用仍会引发类似于此的编译器警告:

c:\projects\ConsoleApplication1\ConsoleApplication1\Program.cs(13,13): warning CS0612: 'ConsoleApplication1.Class1.Test()' is obsolete

例如

程序.cs

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Class1 c = new Class1();
            c.Test(); // call the raw method but with a compiler warning
        }
    }
}

Class1.cs

#pragma warning disable 0612

using System;

namespace ConsoleApplication1
{
    class Class1
    {
        [Obsolete()]
        public void Test()
        {
             // the 'raw' method
        }

        private void CallTest()
        {
            Test(); // call the raw method without a compiler warning
        }
    }
}

编译时,我在 Program.cs 中收到一个编译器警告,而不是在 Class1.cs 中

健康警告 - 这将暂停针对在 Class1 中进行的调用的编译器警告,以过时其他类中的方法。

关于c# - 如果在类外调用方法,如何生成编译器警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7023852/

相关文章:

c# - 使用 AWS Cognito 登录用户/验证用户

c# - 单元测试自定义 NLog 目标

c# - C# 中的合并运算符?

c# - 将文件上传到名称中包含特殊字符的 ftp 文件夹

c# - 处理超过 2 GB 的字符串

c# - 将 C# 转换的 base64 存储为 SQL Server varbinary(max)

c# - 我的 .Net 网站上的 Log4Net 调试时总是将 IsErrorEnabled 值显示为 FALSE

.net - 身份验证票证(表单例份验证)

c# - 使用 LINQ 而不是使用 for-each 循环

.net - 在 C++ 中为 Windows 创建一个简单的程序。如何构建图形用户界面