Visual Studio 默认情况下使类密封

cdmah0mi  于 2023-03-13  发布在  其他
关注(0)|答案(3)|浏览(167)

我在我的.editorconfig文件中为我的C#项目指定了许多代码样式。如果我所有的类都可以默认为sealed(当你创建一个新的类时),或者至少它们会显示警告,说明类没有密封,我会发现这真的很有用。.editorconfig文件中有这样的设置吗?
PS:请不要解释这是不是一个好主意,SO上有很多这样的线程,所以这将是多余的。

3htmauhk

3htmauhk1#

您可以编辑visual studio项模板,它将在创建新文件时使用这些模板。
我以前也这样做过,将其默认为public类,而不是private类(或者是visual studio 2022中的internal类)。
这是社区版的位置,但其他版本将是类似的。
C:\程序文件\Microsoft Visual Studio \2022\社区\公用7\IDE\项目模板\CSharp\代码\1033\类
注意:这些文件是无关紧要的地方,例如对于ASP.NET核心项目,所以您可能需要四处寻找。

e1xvtsh3

e1xvtsh32#

还有一些.editorconfig的首选项,但它们只有在将Meziantou.Analyzer Nuget包安装到您的项目中后才起作用。在您构建解决方案后,这些密封的建议将显示出来。

[*.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

[2023] .NET 7编辑:

现在.NET 7允许您在.editorconfig中指定此警告,如下所示:

# Seal internal types
dotnet_diagnostic.CA1852.severity = warning

但是它有一个要求,即它只能在internal类上工作
来源:https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1852

vc9ivgsu

vc9ivgsu3#

编辑器配置文件不处理创建新类,在VS中,代码片段和模板可以处理--从庞大的嵌套文件类型列表中选择的内容。如果希望这些内容生成密封类,则必须编辑它们或创建自己的类。
另一个方向是编写一个代码分析器和修复提供程序,使你的类成为sealed,前提是你要选择和实现的一组条件是真的。这有一个额外的好处,可以追溯到你已经写好的代码。

相关问题