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

Как настроить ярлык генерации выделенного поля Visual Studio для конструкторов?

VS 2017 (и, возможно, старые версии) дает мне этот удобный небольшой конструктор ярлык для создания поля private readonly и его назначения.

Скриншот:

введите описание изображения здесь

В результате создается частный член с именем userService, а затем присваивается его:

this.userService = userService;

Это противоречит стилю кода, который я использую для обозначения всех закрытых членов с префиксом _, что приводит к присваиванию, которое должно выглядеть следующим образом:

_userService = userService;

Как я могу сделать так, чтобы VS выполнял это правило стиля кода с помощью ярлыков генерации кода?

4b9b3361

Ответ 1

Это также может быть достигнуто непосредственно в Visual Studio. Просто перейдите на Tools -> Options -> Text Editor -> C# -> Code Style -> Naming.

  1. Во-первых, вам нужно определить новый стиль именования, нажав кнопку "Управление стилями именования":

VS2017 Naming style dialog

  1. Затем нажмите знак "+", чтобы определить новое правило для "Частного или внутреннего поля", в котором используется новый стиль именования:

VS2017 Options dialog

  1. Перезапустите Visual Studio

  2. После этого, когда вы примените рефакторинг "Создать и инициализировать поле", он будет назван с подчеркиванием.

Ответ 2

Настройки.editorconfig - ответ kspearrin не работал для меня, я должен был использовать их (для VS2017 Version 15.4.0):

[*.{cs,vb}]
dotnet_naming_rule.private_members_with_underscore.symbols  = private_fields
dotnet_naming_rule.private_members_with_underscore.style    = prefix_underscore
dotnet_naming_rule.private_members_with_underscore.severity = suggestion

dotnet_naming_symbols.private_fields.applicable_kinds           = field
dotnet_naming_symbols.private_fields.applicable_accessibilities = private

dotnet_naming_style.prefix_underscore.capitalization = camel_case
dotnet_naming_style.prefix_underscore.required_prefix = _

Я получил их отсюда: https://github.com/dotnet/roslyn/issues/22884#issuecomment-358776444

Ответ 3

Этого можно достичь, создав собственное правило именования Roslyn Code Analyzer. Добавьте в свое решение .editorconfig чтобы указать пользовательские соглашения об именах.

Подробнее о них читайте здесь: https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference

Чтобы получить желаемый эффект от вопроса, будет работать следующее:

[*.{cs,vb}]
dotnet_naming_rule.private_members_with_underscore.symbols  = private_fields
dotnet_naming_rule.private_members_with_underscore.style    = prefix_underscore
dotnet_naming_rule.private_members_with_underscore.severity = suggestion

dotnet_naming_symbols.private_fields.applicable_kinds           = field
dotnet_naming_symbols.private_fields.applicable_accessibilities = private
dotnet_naming_symbols.private_fields.required_modifiers         = readonly

dotnet_naming_style.prefix_underscore.capitalization = camel_case
dotnet_naming_style.prefix_underscore.required_prefix = _

Результат:

enter image description here