如何为构造函数自定义Visual Studio的私有字段生成快捷方式?

时间:2017-08-17 13:36:43

标签: c# .net visual-studio

VS 2017(也许还有olders版本)为我提供了这个方便的小构造函数快捷方式来生成private readonly字段并分配它。

截图:

enter image description here

这最终会生成一个名为userService的私有成员,然后将其分配给:

this.userService = userService;

这违反了我使用的代码样式,即命名所有前缀为_的私有成员,从而产生如下所示的赋值:

_userService = userService;

如何使VS遵守代码生成快捷方式的代码样式规则?

3 个答案:

答案 0 :(得分:80)

这也可以直接在Visual Studio中实现。只需转到Tools -> Options -> Text Editor -> C# -> Code Style -> Naming

首先,您需要通过单击“管理命名样式”按钮来定义新的命名样式:

VS2017 Naming style dialog

然后单击+号为“私有或内部字段”定义一个新规则,该规则将使用您的新命名方式:

VS2017 Options dialog

在那之后,当您应用“创建并初始化字段”重构时,它将以前导下划线命名。

答案 1 :(得分:22)

.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

答案 2 :(得分:18)

这可以通过创建自己的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