生成成员时,如何防止在 C# 的 VS Code 中添加 `private` 访问修饰符?

How can I prevent the `private` access modifier from being added in VS Code for C# when generating members?

如何防止在生成成员时在 VS Code for C# 中添加 private 访问修饰符?

例如我有错误:

The name 'foo' does not exist in the current context [Assembly-CSharp]csharp(CS0103)

我在光标的帮助下将插入符聚焦在 foo();,按 Ctrl+. 和 select

Generate method 'MyClass.foo'

这是生成的方法:

private void foo()
{
    throw new NotImplementedException();
}

如您所见,我正在添加 private 修饰符。

这里是我想要生成的而不是上面显示的那个:

void foo()
{
    throw new NotImplementedException();
}

我尝试在 VS Code 中搜索 privateaccessibility 设置,但一无所获。鉴于 VS Code 非常可配置,我希望也能够设置此配置。如果你知道怎么做,可以分享给我吗?

我不相信你所要求的在今天是可能的。访问修饰符在 Roslyn here, which is called from here 中设置。正如您在代码中看到的,此设置未暴露给上面的任何层,您将获得 publicprivate:

var accessibility = member.Name == memberName || generateAbstractly
      ? Accessibility.Public
      : Accessibility.Private;

鉴于今天不可能,您可以通过 Roslyn and/or OmniSharp to request this functionality, or you could look at building a custom Roslyn Analyzer 提交问题。

有一个 tutorial 可用,其中包含有关如何提供代码修复以快速处理违规的信息。