CA1041:提供 ObsoleteAttribute 消息

属性
规则 ID CA1041
标题 提供 ObsoleteAttribute 消息
类别 设计
修复是中断修复还是非中断修复 非中断
在 .NET 8 中默认启用 作为建议

原因

类型和成员使用了未指定其 System.ObsoleteAttribute.Message 属性的 System.ObsoleteAttribute 特性进行标记。

默认情况下,此规则仅查看外部可见的类型和成员,但这是可配置的。

规则说明

ObsoleteAttribute 用于标记已弃用的库类型和成员。 库使用者应避免使用任何标记为已过时的类型或成员。 这是因为它可能不受支持,最终将从库的更高版本中删除。 编译使用 ObsoleteAttribute 进行标记的类型和成员时,将显示此特性的 Message 属性。 这将为用户提供有关已过时的类型或成员的信息。 此信息通常包括库设计人员还将支持已过时类型或成员的时长以及要使用的首选替换项。

如何解决冲突

若要修复此规则的冲突,请将 message 参数添加到 ObsoleteAttribute 构造函数。

何时禁止显示警告

不要禁止显示此规则的警告,因为 Message 属性提供了有关已过时类型或成员的关键信息。

配置代码以进行分析

使用下面的选项来配置代码库的哪些部分要运行此规则。

可以仅为此规则、为适用的所有规则或为适用的此类别(设计)中的所有规则配置此选项。 有关详细信息,请参阅代码质量规则配置选项

包含特定的 API 图面

你可以根据代码库的可访问性,配置要针对其运行此规则的部分。 例如,若要指定规则应仅针对非公共 API 图面运行,请将以下键值对添加到项目中的 .editorconfig 文件:

dotnet_code_quality.CAXXXX.api_surface = private, internal

示例

以下示例显示了具有正确声明的 ObsoleteAttribute 的已过时成员。

[ObsoleteAttribute("This property is obsolete and will be removed in a " +
"future version. Use the FullName property instead.", false)]
public string Name
{
    get => "Name";
}
Imports System

Namespace ca1041

    Public Class ObsoleteAttributeOnMember

        <ObsoleteAttribute("This property is obsolete and will " &
             "be removed in a future version. Use the FirstName " &
             "and LastName properties instead.", False)>
        ReadOnly Property Name As String
            Get
                Return "Name"
            End Get
        End Property

        ReadOnly Property FirstName As String
            Get
                Return "FirstName"
            End Get
        End Property

        ReadOnly Property LastName As String
            Get
                Return "LastName"
            End Get
        End Property

    End Class

End Namespace

另请参阅