弃用另一种类型或方法时,消息是否有标准

本文关键字:消息 是否 标准 方法 另一种 类型 | 更新日期: 2023-09-27 18:37:02

我使用:

[Obsolete("Please use [NEW API] instead.")]

弃用公共 API,但我不确定 [新 API] 的标准是什么。以下示例似乎非常标准:

[Obsolete("Please use Method2() instead.")] //This seems to be ok if Method2 is in the same class
[Obsolete("Please use Class2.Method1() instead.")] //This seems to be ok if we are referencing a different class in the same namespace
[Obsolete("Please use Namespace.Class2.Method1() instead.")] //This seems to be ok if we are referencing a different class in a different namespace

但是当你用 args 用特定方法替换 API 时,它开始变得模糊:

[Obsolete("Please use Method2(string, string) instead.")]

这是引用特定方法类型的正确方法还是包含变量名称?例如:

[Obsolete("Please use Method2(string arg1, string arg2) instead.")]

现在更难的是,如果类型已移动到另一个程序集,例如:

[Obsolete("Please use Namespace.ClassName.Method2(), AssemblyName instead.")]
[Obsolete("Please use AssemblyName!Namespace.ClassName.Method2() instead.")]

哪一种是正确的方法,还是另一种方法?

弃用另一种类型或方法时,消息是否有标准

我认为你走在正确的轨道上,这与我过去所做的是一致的。我经常觉得 ObsoleteAttribute 可能会有更多的重载(也许多个属性意味着甚至略有不同的事情?看看 .NET 框架中的一些示例,这些示例完全符合您提到的操作:

[ObsoleteAttribute("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public sealed class XslTransform
[Obsolete("Please use Hashtable(int, float, IEqualityComparer) instead.")] 
public Hashtable(int capacity, float loadFactor, IHashCodeProvider hcp, IComparer comparer) : this(capacity, loadFactor) {