VS 2017 (可能还有更老的版本) 中可以很方便的通过快捷键来生成 private readonly 字段并分配它。
private readonly
截图:
这最终生成了一个名为userService的私有成员,然后将其赋值为:
userService
this.userService = userService;
这违背了我使用的代码风格,即用前缀_命名所有私有成员,导致赋值应该如下所示:
_
_userService = userService;
我怎样才能让VS在它的代码生成快捷方式中遵守这个代码风格规则呢?
这可以通过创建自己的Roslyn代码分析器命名规则来实现。在解决方案中添加.editorconfig以指定自定义命名约定。
.editorconfig
在这里阅读更多关于它们的信息:https://learn.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 = _
结果:
.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
这也可以直接在Visual Studio中实现。只要去Tools -> Options -> Text Editor -> C# -> Code Style -> Naming。
Tools -> Options -> Text Editor -> C# -> Code Style -> Naming
重启Visual Studio
在此之后,当应用“Create and initialize field”重构时,它将以前导下划线命名。