1160

如何使用 C# 将方法标记为过时或不推荐使用?

4

4 回答 4

1808

最短的方法是在方法中添加ObsoleteAttributeas属性。确保包括适当的解释:

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

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

[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]
于 2009-11-18T21:54:15.693 回答
165

用警告标记为过时:

[Obsolete]
private static void SomeMethod()

使用时会收到警告:

显示过时的警告

使用 IntelliSense:

带有 IntelliSense 的过时警告

如果你想留言:

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

这是 IntelliSense 工具提示:

IntelliSense 显示过时消息

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

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

使用时,您会得到:

方法使用显示为错误

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

于 2016-10-07T15:22:59.353 回答
73

使用关键字为方法添加注释Obsolete。消息参数是可选的,但可以很好地传达为什么该项目现在已过时和/或改用什么。
例子:

[System.Obsolete("use myMethodB instead")]
void myMethodA()
于 2009-11-18T22:04:22.043 回答
64

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

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

在此处输入图像描述

于 2018-06-18T13:08:49.487 回答