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

问题描述

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

例如我有错误

名称“foo”在当前上下文中不存在 [Assembly-CSharp]csharp(CS0103)

enter image description here

我在光标的帮助下将插入符号聚焦在 foo(); 上,按 Ctrl+. 并选择

生成方法'MyClass.foo'

enter image description here

这是生成方法

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

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

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

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

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

解决方法

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

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

鉴于今天无法实现,您可以向 Roslyn 和/或 OmniSharp 提交问题以请求此功能,或者您可以考虑构建一个 custom Roslyn Analyzer。>

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