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

时间:2011-11-04 09:48:26

标签: c# .net vb.net naming-conventions resharper

根据General Naming Conventions CLR类型名称(例如StringInt16)的使用应优先于使用特定于语言的类型名称(string,{ {1}})。我通常会遵循这个建议。然而,Resharper似乎在生成代码时使用特定于语言的类型名称(重构方法,如提取方法,生成foreach循环等),这非常烦人。

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

更新 很多人都在想为什么有人会强制使用short代替Int32int而不是String的样式,目的是更好的语法高亮:int呈现为关键字,Int32呈现为一种类型。由于修改突出显示实现似乎有点过分,因此强制执行CLR类型只会完成工作。这是我们的风格指南的一部分原因之一。

4 个答案:

答案 0 :(得分:15)

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

RESHARPER - > Options

Code Editing - > C# - > Code Style

Build-in type naming - > When referencing build-in type, prefer using选择CLR type name

This feature requires R#9.1 or higher

如果您使用较旧版本的ReSharper

R#4.5-5.1有一个扩展,正是考虑到了这个目的。它被称为Neovolve。不幸的是,这个扩展没有移植到任何后来的R#版本。

VS 2015

同样对于Visual Studio 2015,您可能希望禁用Tools - > Options {{1}下的内在预定义类型(这会导致符号在文本编辑器中显示为灰色) }} - > Text Editor - > C# - > Code Style

答案 1 :(得分:8)

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

  • 更好地突出显示
  • 少输入
  • 避免了非关键字使用的问题,即如果我有另一个方法/类型/属性/等称为Int32(愚蠢,但可能; where-as int总是意味着global::System.Int32
  • 即使您没有using System;
  • 仍然有效

就个人而言,我不担心这个。 R#没有做任何错误的

另外请注意,有一些MS错误的例子 - IDataReader / DbDataReaderGetFloat()有关的问题(应该是GetSingle() })。

答案 2 :(得分:4)

目前没有ReSharper选项可以优先System.Int16而不是short,类似。您可以投票选出open feature request on YouTrack;但请注意,它已经开放超过五年没有实施,你可以选择作为暗示。

答案 3 :(得分:2)

我知道这个问题已经得到解答,但是对于那些对将来首选样式感到好奇的人,.NET团队现在正式建议使用语言名称而不是CLR名称,这是.NET所使用的样式核心开发。

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

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