CA1721:属性名不应与 get 方法冲突
属性 | 值 |
---|---|
规则 ID | CA1721 |
标题 | 属性名不应与 get 方法冲突 |
类别 | 命名 |
修复是中断修复还是非中断修复 | 重大 |
在 .NET 8 中默认启用 | 否 |
原因
成员的名称以“Get”开头,且其余部分与属性的名称匹配。 例如,包含名为“GetColor”的方法和名为“Color”的属性的类型将导致规则冲突。 如果使用 ObsoleteAttribute 对属性或方法进行标记,则不会触发此规则。
默认情况下,此规则仅查看外部可见的成员和属性,但这是可配置的。
规则说明
“Get”方法和属性的名称应能够明确区分其功能上的差异。
命名约定为面向公共语言运行时的库提供通用外观。 此一致性缩短了学习新软件库所需的时间,让客户更加相信该库是由拥有开发托管代码专业知识的人员所开发。
如何解决冲突
更改名称,使其与前缀为“Get”的方法名称不匹配。
何时禁止显示警告
不禁止显示此规则发出的警告。 该规则的一个例外是,“Get”方法是由实现 IExtenderProvider 接口所引起。
抑制警告
如果只想抑制单个冲突,请将预处理器指令添加到源文件以禁用该规则,然后重新启用该规则。
#pragma warning disable CA1721
// The code that's violating the rule is on this line.
#pragma warning restore CA1721
若要对文件、文件夹或项目禁用该规则,请在配置文件中将其严重性设置为 none
。
[*.{cs,vb}]
dotnet_diagnostic.CA1721.severity = none
有关详细信息,请参阅如何禁止显示代码分析警告。
配置代码以进行分析
使用下面的选项来配置代码库的哪些部分要运行此规则。
可以仅为此规则、为适用的所有规则或为适用的此类别(命名)中的所有规则配置此选项。 有关详细信息,请参阅代码质量规则配置选项。
包含特定的 API 图面
你可以根据代码库的可访问性,配置要针对其运行此规则的部分。 例如,若要指定规则应仅针对非公共 API 图面运行,请将以下键值对添加到项目中的 .editorconfig 文件:
dotnet_code_quality.CAXXXX.api_surface = private, internal
示例
下面的示例包含与此规则冲突的方法和属性。
public class Test
{
public DateTime Date
{
get { return DateTime.Today; }
}
// Violates rule: PropertyNamesShouldNotMatchGetMethods.
public string GetDate()
{
return this.Date.ToString();
}
}
Imports System
Namespace ca1721
Public Class Test
Public ReadOnly Property [Date]() As DateTime
Get
Return DateTime.Today
End Get
End Property
' Violates rule: PropertyNamesShouldNotMatchGetMethods.
Public Function GetDate() As String
Return Me.Date.ToString()
End Function
End Class
End Namespace