EditorConfig:允许或强制私有字段以下划线开头

EditorConfig: Allow or Enforce Private Fields to Begin with An Underscore

编辑: 我正在使用 VS 代码。

我的代码收到以下警告,该代码在私有字段前加了下划线:

Naming rule violation: Prefix '_' is not expected [MyProject]csharp(IDE1006)

下面是我的代码:

namespace MyProject
{
    public class Dog
    {
        // Naming rule violation: Prefix '_' is not expected [MyProject]csharp(IDE1006)
        private int _age;

        public int Age()
        {
            return _age;
        }

        public void SetAge(int age)
        {
            _age = age;
        }
    }
}

下面是我的 .editorconfig 文件:

[*.cs]

# Require private fields to begin with an underscore (_).
dotnet_naming_rule.instance_fields_should_be_camel_case.severity = warning
dotnet_naming_rule.instance_fields_should_be_camel_case.symbols = instance_fields
dotnet_naming_rule.instance_fields_should_be_camel_case.style = instance_field_style
dotnet_naming_symbols.instance_fields.applicable_kinds = field
dotnet_naming_style.instance_field_style.capitalization = camel_case
dotnet_naming_style.instance_field_style.required_prefix = _

我也发布了我的 Directory.Build.props 文件,以防它与我上面的 .editorconfig 文件冲突。 我将它设置得尽可能严格,这样我就可以修复(或根据需要抑制)更严格的 C# 编译器会引发的所有警告:

<Project>
  <PropertyGroup>
    <Features>strict</Features>
    <WarningLevel>9999</WarningLevel>
  </PropertyGroup>
</Project>

我正在寻找一种解决方案,使 C# 的编译器尽可能严格,并且我可以在私有字段前加上下划线,允许它们或最好强制执行它们(私有字段 没有下划线会得到警告。

在 Visual Studio 中,您可以通过转到选项来执行此操作,然后执行以下步骤:

  1. 转到 C# 下的“命名”
  2. 单击“管理命名样式”
  3. 点击 + 号
  4. 填写一个合乎逻辑的名字
  5. 用_
  6. 填写“必填前缀”
  7. Select 大写的“驼峰命名法”
  8. 点击确定
  9. 点击确定
  10. 点击 + 号
  11. Select“私有或内部字段”(如果您只想私有,则需要创建自定义规范)as Specification
  12. Select 你的自定义命名风格作为命名风格
  13. Select 严重程度警告

请记住这些设置将被 .editorconfig

覆盖

看了微软的文档终于弄明白了here.

显然,条目的中间部分是一个 标识符,可以设置为任何我们想要的。

我创建了一条新规则,要求私有字段以下划线开头并采用驼峰式大小写。

下面是我的新 .editorconfig 文件:

# Define what we will treat as private fields.
dotnet_naming_symbols.private_fields.applicable_kinds = field
dotnet_naming_symbols.private_fields.applicable_accessibilities = private
# Define rule that something must begin with an underscore and be in camel case.
dotnet_naming_style.require_underscore_prefix_and_camel_case.required_prefix = _
dotnet_naming_style.require_underscore_prefix_and_camel_case.capitalization = camel_case
# Appy our rule to private fields.
dotnet_naming_rule.private_fields_must_begin_with_underscore_and_be_in_camel_case.symbols = private_fields
dotnet_naming_rule.private_fields_must_begin_with_underscore_and_be_in_camel_case.style = require_underscore_prefix_and_camel_case
dotnet_naming_rule.private_fields_must_begin_with_underscore_and_be_in_camel_case.severity = warning

非常感谢所有提供帮助的人,我希望这对那里的人有所帮助。