简体   繁体   中英

How to mark a method as obsolete or deprecated?

How do I mark a method as obsolete or deprecated using C#?

The shortest way is by adding the ObsoleteAttribute as an attribute to the method . Make sure to include an appropriate explanation:

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

You can also cause the compilation to fail, treating the usage of the method as an error instead of warning , if the method is called from somewhere in code like this:

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

To mark as obsolete with a warning:

[Obsolete]
private static void SomeMethod()

You get a warning when you use it:

显示过时警告

And with IntelliSense:

带有 IntelliSense 的过时警告

If you want a message:

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

Here's the IntelliSense tool tip:

IntelliSense 显示过时的消息

Finally if you want the usage to be flagged as an error:

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

When used this is what you get:

方法用法显示为错误

Note: Use the message to tell people what they should use instead, not why it is obsolete.

Add an annotation to the method using the keyword Obsolete . Message argument is optional but a good idea to communicate why the item is now obsolete and/or what to use instead.
Example:

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

With ObsoleteAttribute you can mark a method as deprecated. It has three constructors:

  1. [Obsolete]: is a no parameter constructor and is a default using this attribute.
  2. [Obsolete(string message)]: in this format you can get message of why this method is deprecated.
  3. [Obsolete(string message, bool error)]: in this format message is very explicit but error means, in compilation time, compiler must be showing error and cause to fail compiling or not.

在此处输入图片说明

For dependency injected methods, Apply the [Obsolete("description")] attribute to the declaration rather than implementation (:doh: moment for me)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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