CA1712:不要将类型名用作枚举值的前缀

属性
规则 ID CA1712
标题 不要将类型名用作枚举值的前缀
类别 命名
修复是中断修复还是非中断修复 重大
在 .NET 8 中默认启用

原因

枚举包含名称以枚举的类型名称开头的成员。

规则说明

枚举成员的名称不使用类型名称作为前缀,因为类型信息将由开发工具提供。

命名约定为面向公共语言运行时的库提供通用外观。 这缩短了学习新软件库所需的时间,让客户更加相信该库是由拥有开发托管代码专业知识的人员所开发。

如何解决冲突

若要解决此规则的冲突,请从枚举成员中删除类型名称前缀。

何时禁止显示警告

不禁止显示此规则发出的警告。

示例

下面的示例演示了一个错误命名的枚举,后跟更正后的版本。

public enum DigitalImageMode
{
    DigitalImageModeBitmap = 0,
    DigitalImageModeGrayscale = 1,
    DigitalImageModeIndexed = 2,
    DigitalImageModeRGB = 3
}

public enum DigitalImageMode2
{
    Bitmap = 0,
    Grayscale = 1,
    Indexed = 2,
    RGB = 3
}
Imports System

Namespace ca1712

    Enum DigitalImageMode

        DigitalImageModeBitmap = 0
        DigitalImageModeGrayscale = 1
        DigitalImageModeIndexed = 2
        DigitalImageModeRGB = 3

    End Enum

    Enum DigitalImageMode2

        Bitmap = 0
        Grayscale = 1
        Indexed = 2
        RGB = 3

    End Enum

End Namespace

配置代码以进行分析

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

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

枚举值前缀触发器

你可以配置触发规则所需的枚举值数量。 例如,若要指定在一个或多个枚举值以枚举类型名称开头时触发规则,请将以下键值对添加到项目中的 editorconfig 文件:

dotnet_code_quality.CA1712.enum_values_prefix_trigger = AnyEnumValue

示例:

选项值 总结
dotnet_code_quality.CA1712.enum_values_prefix_trigger = AnyEnumValue 如果任意枚举值以枚举类型名称开头,则会触发此规则。
dotnet_code_quality.CA1712.enum_values_prefix_trigger = AllEnumValues 如果所有枚举值均以枚举类型名称开头,则会触发此规则。
dotnet_code_quality.CA1712.enum_values_prefix_trigger = Heuristic 使用默认启发式(即至少 75% 的枚举值以枚举类型名称开头)触发规则。

另请参阅