VS 2017 (및 아마도 이전 버전)은 private readonly
필드 를 생성 하고 할당 하는이 편리한 작은 생성자 바로 가기를 제공 합니다.
스크린 샷 :
이렇게하면라는 개인 멤버가 생성 userService
되고 다음과 같이 할당됩니다.
this.userService = userService;
이것은 내가 사용하는 코드 스타일에 위배됩니다. 모든 개인 멤버의 이름을 접두사 _
로 지정하면 다음과 같은 할당이됩니다.
_userService = userService;
VS가 코드 생성 바로 가기를 사용하여이 코드 스타일 규칙을 따르도록하려면 어떻게해야합니까?
답변
이는 Visual Studio에서 직접 수행 할 수도 있습니다. 로 이동하십시오 Tools -> Options -> Text Editor -> C# -> Code Style -> Naming
.
- 먼저 “이름 지정 스타일 관리”버튼을 클릭하여 새 이름 지정 스타일을 정의해야합니다.
- 그런 다음 + 기호를 클릭하여 새 이름 지정 스타일을 사용하는 “비공개 또는 내부 필드”에 대한 새 규칙을 정의합니다.
-
Visual Studio 다시 시작
-
그 후 “필드 생성 및 초기화”리팩토링을 적용하면 선행 밑줄로 이름이 지정됩니다.
답변
.editorconfig 설정은 kspearrin의 대답이 나를 위해 작동하지 않았다는 것입니다 (VS2017 버전 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
답변
이는 고유 한 Roslyn 코드 분석기 명명 규칙을 생성하여 달성 할 수 있습니다. .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 = _
결과: