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

wlp8pajw  于 2023-01-21  发布在  其他
关注(0)|答案(4)|浏览(241)

VS 2017(可能还有更老的版本)给了我这个方便的构造函数快捷方式来生成private readonly字段并对其赋值。
截图:

最后生成一个名为userService的私有成员,然后将其赋值为:

this.userService = userService;

这与我使用的代码风格相反,我使用的代码风格是用前缀_命名所有私有成员,结果赋值如下所示:

_userService = userService;

我怎样才能使VS通过它的代码生成快捷方式来遵守这个代码风格规则呢?

cuxqih21

cuxqih211#

这也可以直接在Visual Studio中实现。只需转到Tools -> Options -> Text Editor -> C# -> Code Style -> Naming
1.首先,您需要通过单击"管理命名样式"按钮来定义新的命名样式:

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

1.重新启动Visual Studio
1.之后,当您应用"创建并初始化字段"重构时,它将以前导下划线命名。

plicqrtu

plicqrtu2#

.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

kuuvgm7e

kuuvgm7e3#

这可以通过创建自己的Roslyn代码分析器命名规则来实现。在解决方案中添加.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 = _

结果:

kx7yvsdv

kx7yvsdv4#

我阅读了前面的解决方案,尽管它们看起来很正确,但让配置在VS2022中正确工作的唯一方法是正确排序.editorconfig条目,如下所示:

# Use underscores for private fields
[*.{cs,vb}]
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 = _

dotnet_naming_rule.private_fields_with_underscore.symbols  = private_fields
dotnet_naming_rule.private_fields_with_underscore.style    = prefix_underscore
dotnet_naming_rule.private_fields_with_underscore.severity = warning

相关问题