CA1710:标识符应具有正确的后缀
类型名 |
IdentifiersShouldHaveCorrectSuffix |
CheckId |
CA1710 |
类别 |
Microsoft.Naming |
是否重大更改 |
是 |
原因
标识符的后缀不正确。
规则说明
按照约定,扩展某些基类型或实现某些接口的类型的名称,或者由这些类型派生的类型的名称应具有与相应基类型或接口关联的后缀。
命名约定为所有针对公共语言运行时的库提供了通用的外观。 这提高了学习新软件库的效率,并使客户进一步认为该软件库是由某位具有开发托管代码专门技术的人员所开发。
下表列出了具有关联后缀的基类型和接口。
基类型/接口 |
后缀 |
---|---|
特性 |
|
EventArgs |
|
异常 |
|
Collection |
|
Dictionary |
|
Collection |
|
Collection 或 Queue |
|
Collection 或 Stack |
|
Collection |
|
Dictionary |
|
数据集 |
|
Collection 或 DataTable |
|
流 |
|
权限 |
|
Condition |
|
事件处理程序委托。 |
EventHandler |
对于实现 ICollection 并且是数据结构(如字典、堆栈或队列)的通用类型的类型,允许使用提供有关该类型预定用法的有意义信息的名称。
而对于实现 ICollection 并且是特定项集合的类型,其名称则必须以单词“Collection”结尾。 例如,Queue 对象集合的名称应为“QueueCollection”。 “Collection”后缀标识可使用 foreach(在 Visual Basic 中为 For Each)语句枚举该集合的成员。
对于实现 IDictionary 的类型,其名称以单词“Dictionary”结尾,即使该类型还实现 IEnumerable 或 ICollection。 使用“Collection”和“Dictionary”后缀命名约定,用户可区分下面两种枚举模式。
具有后缀“Collection”的类型遵循以下枚举模式。
foreach(SomeType x in SomeCollection) { }
具有后缀“Dictionary”的类型遵循以下枚举模式。
foreach(SomeType x in SomeDictionary.Values) { }
DataSet 对象由 DataTable 对象的集合组成,而该集合由 System.Data.DataColumn 和System.Data.DataRow 对象以及其他对象的集合组成。 这些集合通过基 System.Data.InternalDataCollectionBase 类实现 ICollection。
如何解决冲突
重命名类型,使其具有包含正确术语的后缀。
何时禁止显示警告
如果类型是可扩展或将包含任意一组不同项目的通用数据结构,则可以安全地禁止显示警告以使用后缀“Collection”。 在这种情况下,提供有关数据结构的实现、性能或其他特性的有价值信息的名称(例如,BinaryTree)十分有意义。 对于类型代表特定类型集合(例如,StringCollection)的情况,不要禁止显示此规则发出的警告,因为该后缀指示可使用 foreach 语句枚举该类型。
对于其他后缀,不要禁止显示此规则发出的警告。 使用该后缀,可通过类型名称体现预定用法。