【问题标题】:Make class sealed by default使类默认密封
【发布时间】:2022-07-07 22:15:53
【问题描述】:

我的 .editorconfig 文件中为我的 C# 项目指定了许多代码样式。如果我的所有课程默认都是sealed(当你创建一个新课程时),我会发现它真的很有用。 .editorconfig 文件中是否有此设置?

PS:请不要解释这是不是一个好主意,SO上有很多这样的线程,所以它是多余的。

【问题讨论】:

  • 以及编译器/样式分析器应该如何确定该类是否不是故意密封的/是否是新创建的?
  • 如果问题是如何创建密封类默认值 - 您可以为您的 IDE(VS、Rider 甚至 dotnet new)创建新的 sn-p 或修改现有的(VS、Rider )

标签: c# visual-studio editorconfig sealed sealed-class


【解决方案1】:

您可以编辑 Visual Studio 项目模板,它在创建新文件时使用。

我之前已将其更改为默认为公共类而不是私有类(或现在使用 Visual Studio 2022 为内部类)。

这是社区版的位置,但其他版本将类似。

C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class

注意:文件位置无关紧要,例如对于 ASP.Net 核心项目,因此您可能需要四处寻找。

【讨论】:

  • 这是所有选项中最糟糕的选择,因为您的更改不会在计算机或安装之间保留。如果你有多个人,没有什么可以强迫他们使用你的模板,所以他们写的任何东西都不会遵守你的规则。
【解决方案2】:

编辑器配置文件不处理创建新类,在 VS 中它是代码 sn-ps 和模板——你从庞大的文件类型嵌套列表中选择的东西。如果您希望它们生成密封类,则必须对其进行编辑或创建自己的。

您可以采取的另一个方向是编写代码分析器和修复提供程序,使您的类sealed,前提是您可以选择和实施的一组条件是真实的。这还有一个额外的好处,那就是可以追溯应用到您已经编写的代码。

【讨论】:

【解决方案3】:

还有一些.editorconfig的偏好,但他们似乎只是给出了一个建议:

[*.cs]
dotnet_diagnostic.MA0053.severity = suggestion

# Report public classes without inheritors (default: false)
MA0053.public_class_should_be_sealed = true

# Report class without inheritors even if there is virtual members (default: false)
MA0053.class_with_virtual_member_shoud_be_sealed = true

来源:

https://www.meziantou.net/performance-benefits-of-sealed-class.htm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-24
    • 2016-02-27
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多