【问题标题】:How can I prevent the `private` access modifier from being added in VS Code for C# when generating members?生成成员时,如何防止在 VS Code for C# 中添加“private”访问修饰符?
【发布时间】:2021-08-05 20:57:15
【问题描述】:

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

例如我有错误:

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

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

生成方法'MyClass.foo'

这是生成的方法:

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

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

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

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

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

【问题讨论】:

  • 我确定您可以使用 editorconfig 属性。这可能是唯一的方法,因为我怀疑是否有任何“内置”
  • 看到这个,它指的是 VS,但假设 vscode 尊重 editorconfig(它应该!)那么他在谈论 VS tabsoverspaces.com/… 无论如何应该至少指向正确的方向并不重要
  • @pinkfloydx33,在editorconfig 的帮助下,我无法实现我在问题中要求的内容。

标签: c# visual-studio-code vscode-settings private access-modifiers


【解决方案1】:

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

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

鉴于今天不可能,您可以向Roslyn 和/或OmniSharp 提出问题以请求此功能,或者您可以考虑构建custom Roslyn Analyzer

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

【讨论】:

  • While this wouldn't affect how the methods are initially generated 如果不是,那您为什么认为这可能是一个合适的答案?
  • 您的问题似乎是符合公司标准。如果开发人员选择使用私有,即使模板已修复,此解决方案实际上可以帮助将执行提升到一个新的水平(通过失败构建)。诚然,如果您想获得技术知识,这更像是一种解决方法而不是修复。
  • 这不是一种解决方法。根据您的建议,我没有得到我在问题中要求的内容。
  • 我不认为你今天的要求是可能的。访问修饰符在 Roslyn 中设置here,称为here
  • 确定可访问性的代码如下所示:var accessibility = member.Name == memberName || generateAbstractly ? Accessibility.Public : Accessibility.Private;(对格式化感到抱歉,没有任何方法可以修复它)如果您希望能够按照您的要求进行操作,请进行更改首先在 Roslyn 需要,然后可能是 OmniSharp
猜你喜欢
  • 2014-01-02
  • 1970-01-01
  • 2020-01-06
  • 1970-01-01
  • 2010-11-07
  • 2012-06-23
  • 1970-01-01
  • 2015-07-24
  • 1970-01-01
相关资源
最近更新 更多