如何将方法标记为过时或已弃用?

如何使用C#将方法标记为过时或已弃用?

364926 次浏览

最短的方法是将#0添加为属性到方法。确保包含适当的解释:

[Obsolete("Method1 is deprecated, please use Method2 instead.")]public void Method1(){ … }

如果从代码中的某个地方调用该方法,您也可以导致编译失败,将该方法的使用视为错误而不是警告

[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]

使用关键字Obsolete为方法添加注释。Message参数是可选的,但可以传达为什么该项目现在已经过时和/或使用什么代替。
示例:

[System.Obsolete("use myMethodB instead")]void myMethodA()

用警告标记为已过时:

[Obsolete]private static void SomeMethod()

当你使用它时,你会得到一个警告:

显示过时警告

使用IntelliSense:

智能感知过时警告

如果您需要留言:

[Obsolete("My message")]private static void SomeMethod()

以下是IntelliSense工具提示:

智能感知显示过时的消息

最后,如果您希望将用法标记为错误:

[Obsolete("My message", true)]private static void SomeMethod()

使用时,这是你得到的:

方法使用显示为错误

注意:使用消息告诉人们他们应该使用什么,而不是为什么它过时了。

使用ObsoleteAttribute,您可以将方法标记为已弃用。它有三个构造函数:

  1. [Obsolete]:是一个无参数构造函数,是使用此属性的默认值。
  2. [Obsolete(string message)]:在这种格式中,您可以获得message为什么不建议使用此方法。
  3. 此格式消息中的[Obsolete(string message, bool error)]:非常明确,但error意味着,在编译时,编译器必须显示错误并导致编译失败与否。

在此处输入图片描述

对于依赖注入方法,将[Obsolete("description")]属性应用于声明而不是实现(: doh:我的时刻)