如何强制Resharper将CLR类型名称用于自动生成的代码?

mbx*_*mbx 13 .net c# vb.net resharper naming-conventions

按照通用命名约定 CLR类型名称的使用(例如String, Int16)要优于语言的特定类型名称的使用(string,short).我通常会遵循这个建议.然而,Resharper似乎在生成代码时使用特定于语言的类型名称(重构方法,如extract方法,生成foreach循环等),这非常烦人.

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

更新 由于许多人想知道为什么有人会强制使用Int32代替intString代替string使用的样式,意图是更好的语法高亮:int呈现为关键字,Int32呈现为类型.由于修改突出显示实现似乎有点过分,因此强制执行CLR类型只会完成工作.这是我们的风格指南的一部分原因之一.

mbx*_*mbx 15

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

RESHARPER- >Options

Code Editing- > C#- >Code Style

Build-in type naming- > 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- > Options Text Editor- > C#- > Code Style- >Prefer intrinsic predefined type keyword*


Mar*_*ell 8

这些指南指的是api上的公共方法名称,例如obj.ReadInt32()(可能在序列化程序中).在代码(变量和参数)的主体中,它没有明确指定.我个人比较喜欢的别名double,int等等-如:

  • 更好的突出
  • 减少打字
  • 避免非关键字使用的问题,即如果我有另一个方法/类型/属性/等调用Int32(愚蠢,但可能;其中 - int总是意味着global::System.Int32)
  • 即使你没有,也能正常工作 using System;

就个人而言,我不担心这一点.R#没有做错任何.

顺便说一句-请注意,有MS的得到这个错误的几个例子-一个跃起想到的是IDataReader/ DbDataReaderGetFloat()(应该是GetSingle()).

  • 不使用系统是一个重点.更好的突出显示?使用CLR类型的一个原因实际上是突出显示:相同颜色的所有类型,用户定义的类型以及语言类型,以免将它们与其他关键字混淆.减少打字?好吧,在大多数情况下,它只是相同的单词,首字母大写.对于`int`我更喜欢知道长度(必须是在多个平台上使用C的旧习惯). (2认同)