Подтвердить что ты не робот

Как заставить Resharper использовать имена типов CLR для автоматически сгенерированного кода?

В соответствии с Общие соглашения о присвоении имен использование наименований типов CLR (например, String, Int16) должно быть предпочтительнее использования имен типов конкретных языков (String, short). Я обычно следую этому совету. Тем не менее, Resharper, по-видимому, использует специфичные для языка имена типов при генерации кода (рефакторинг, такой как метод extract, генерация циклов foreach и т.д.), Что очень раздражает.

Как заставить Resharper использовать имена типов CLR вместо?

Update Поскольку многие задаются вопросом, почему кто-то будет применять стиль, в котором используется Int32 вместо int или String вместо String, целью было лучшее выделение синтаксиса: int отображается как ключевое слово, Int32 отображается как тип. Поскольку изменение реализации подсветки кажется излишним, принудительное использование CLR-типа просто выполняет эту работу. Это одна из причин, почему это является частью нашего руководства по стилю.

4b9b3361

Ответ 1

Откройте параметры R #, перейдите в С# Code Style. Или более подробно:

RESHARPEROptions

Code EditingC#Code Style

Build-in type namingWhen 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 вы можете отключить, чтобы предпочесть встроенные предопределенные типы (что приводит к тому, что символы будут выделены серым цветом в текстовом редакторе) в разделе ToolsOptions Text EditorC#Code StylePrefer intrinsic predefined type keyword*

Ответ 2

Эти рекомендации относятся к именам общедоступных методов на вашем api, например obj.ReadInt32() (возможно, в сериализаторе). В теле кода (переменные и параметры) он меньше указан. Лично я предпочитаю псевдонимы double, int и т.д. - как:

  • лучшее выделение
  • меньше ввода
  • позволяет избежать проблем с использованием не ключевого слова, т.е. если у меня есть другой метод/тип/свойство/etc, называемый Int32 (глупо, но возможно, где-как int всегда означает global::System.Int32)
  • работает, даже если у вас нет using System;

Лично я бы не стал беспокоиться об этом. R # не делает ничего плохого.

В качестве примечания - обратите внимание, что есть несколько примеров того, как MS ошибается - один, который бросается в голову, - это IDataReader/DbDataReader с GetFloat() (должно быть GetSingle()).

Ответ 3

В настоящее время нет опции ReSharper, которая предпочитает System.Int16 over short и аналогичную. Существует открытый открытый запрос функции на YouTrack, за который вы можете проголосовать; но обратите внимание, что он открыт более пяти лет, не будучи реализованным, что вы можете выбрать в качестве подсказки.