如何强制Resharper为自动生成的代码使用CLR类型名称

本文关键字:CLR 类型 代码 Resharper 何强制 自动生成 | 更新日期: 2023-09-27 18:13:35

根据通用命名惯例,CLR类型名称(例如StringInt16(的使用应优先于特定语言类型名称(stringshort(的使用。我通常听从这个建议。然而,Resharper在生成代码时似乎使用了特定于语言的类型名称(重构,如提取方法、生成foreach循环等(,这非常令人讨厌。

如何强制Resharper使用CLR类型名称?

更新许多人想知道为什么有人会强制使用Int32而不是intString而不是string的样式,其目的是更好的语法高亮显示:int被呈现为关键字,Int32被呈现为类型。由于修改高亮显示实现似乎有些过头了,所以强制执行CLR类型只需完成任务即可。这就是为什么这是我们风格指南的一部分的原因之一。

如何强制Resharper为自动生成的代码使用CLR类型名称

打开R#选项,转到C#代码样式。或者更详细地说:

RESHARPER->Options

Code Editing->C#->Syntax Style

Build-in types

  • In locals, members and parameters, prefer-CLR type name
  • Members to qualify-CLR type name

旁白:你可能只想保护它Team Shared,因为大多数公共项目更喜欢关键字(你不想因为建议使用这种风格的补丁而意外地惹恼OSS贡献者(。

旧版本

Code Editing->C#->Code Style

CCD_ 23->When referencing build-in type, prefer using选择CLR type name

此功能要求R#9.1或更高版本。

如果您绑定到ReSharper的旧版本

R#4.5-5.1的扩展正是出于这个目的。它叫Neovolve。不幸的是,这个扩展没有移植到任何后续的R#版本。

VS 2015

此外,对于Visual Studio 2015,您可能希望禁用Tools->CCD_ 27 CCD_;CCD_ 29->CCD_ 30->Prefer intrinsic predefined type keyword*

这些准则指的是api上的公共方法名称,例如obj.ReadInt32()(可能在序列化程序中(。在代码(变量和参数(的主体中,它的指定较少。就我个人而言,我更喜欢别名doubleint等,如:

  • 更好地突出显示
  • 较少打字
  • 避免了非关键字用法的问题,即如果我有另一个方法/类型/属性等,称为Int32(愚蠢,但可能;其中int始终表示global::System.Int32(
  • 即使您没有using System;也有效

就我个人而言,我不会担心这件事。R#没有做错任何事情。

顺便说一句,注意有几个MS犯了这个错误的例子——脑海中浮现的是IDataReader/DbDataReaderGetFloat()(应该是GetSingle()(。

目前没有ReSharper选项更喜欢System.Int16而不是short等。YouTrack上有一个开放功能请求,您可以投票支持;但请注意,它已经开放了五年多,但没有得到实施,你可以选择将其视为一种暗示。

我知道这个问题已经得到了回答,但对于那些想知道未来首选样式的人,.NET团队现在正式建议使用语言名称而不是CLR名称,这是用于.NET Core开发的样式。

对于类型引用和方法调用(例如,int.Parse而不是Int32.Parse(,我们使用语言关键字而不是BCL类型(例如,用int, string, float代替Int32, String, Single等(。

https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/coding-style.md