繁体   English   中英

制作第三方方法 [已过时]

[英]Making a third-party method [Obsolete]

如果我想在我的代码中将一个方法声明为已弃用/过时,我可以向它添加[Obsolete]属性,并使编译器在使用该方法时发出警告(或错误)。

对于第三方方法(例如System.Console.WriteLine )是否可以实现类似的效果? 显然,我无法添加该属性,因为我无法控制代码。 但也许 .NET 或 Visual Studio 中还有其他一些技巧?

我最好寻找一种“开箱即用”的解决方案,它不需要像编写我自己的手动解析代码的构建后脚本之类的东西。

使用 Visual Studio 2015,您可以创建实时代码分析器,为几乎所有内容提供自定义设计时检查。 这里有一个很好的教程。 这些通常作为解决方案的一部分存在,因此无论在哪里编译,它们都会“跟随它”。

代码分析器可以引发编译时错误或警告,甚至可以显示 UI 以自动更正问题。 它们可能非常强大,但根据您的需要,编写其中之一可能相当复杂。

以前版本的 Visual Studio (2010+) 也有类似的功能 它的集成度不是很好,但可能适合您。

您可以通过在 ReSharper 中创建自定义代码检查规则来做到这一点。

转到 ReSharper / 选项 / 代码检查 / 自定义模式 / 添加模式,编写与已弃用方法调用匹配的模式,并选择检查严重性,例如“建议”或“警告”。 您还可以编写可以通过快速修复应用的替换模式。

示例

一种自定义模式的示例

在此示例中, System.Console被误用于日志记录,应替换为适当的 log4net 调用。

ReSharper 用户的另一个选择: ExternalAnnotations

以下是为 Selenium 的WebDriver.dll添加注释的示例:

  1. 在目标项目的*.csproj旁边创建ExternalAnnotations文件夹。
  2. 在文件夹内创建WebDriver.xml
     <?xml version="1.0" encoding="utf-8" ?> <assembly name="WebDriver"> <member name="M:OpenQA.Selenium.INavigation.GoToUrl(System.String)"> <attribute ctor="M:System.ObsoleteAttribute.#ctor(System.String,System.Boolean)"> <argument>Use different overload of this method.</argument> <argument>true</argument> </attribute> </member>
  3. 重新加载解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM