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

VS 2017(可能更旧的版本)为我提供了这个方便的小构造函数快捷方式,用于生成_字段并进行分配。

截图:

enter image description here

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

this.userService = userService;

这违背了我使用的代码样式,该样式使用所有前缀_命名所有私有成员,从而导致分配看起来像这样:

_userService = userService;

如何使VS遵循其代码生成快捷方式遵循此代码样式规则?

kspearrin asked 2019-10-08T12:00:42Z
3个解决方案
66 votes

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

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

VS2017 Naming style dialog

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

VS2017 Options dialog

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

Maciek answered 2019-10-08T12:01:14Z
20 votes

.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]

michael_hook answered 2019-10-08T12:01:46Z
17 votes

这可以通过创建自己的Roslyn Code Analyzer命名规则来实现。 在解决方案中添加.editorconfig以指定自定义命名约定。

在这里阅读有关它们的更多信息:[https://docs.microsoft.com/zh-cn/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

kspearrin answered 2019-10-08T12:02:27Z
translate from https://stackoverflow.com:/questions/45736659/how-do-i-customize-visual-studios-private-field-generation-shortcut-for-constru