我在我的.editorconfig
文件中为我的c#项目指定了许多代码样式。如果我所有的类在默认情况下都是sealed
(当你创建一个新的类时),或者至少他们会在类没有密封的地方显示警告,我会发现这真的很有用。在.editorconfig
文件中有这个设置吗?
PS:请不要解释这是不是一个好主意,在SO上有很多这样的线程,所以这是多余的。
您可以编辑visual studio项目模板,它在创建新文件时使用。
我之前已经这样做过,将其更改为默认的公共类而不是私有类(或者现在是visual studio 2022的内部类)。
这是社区版的位置,但其他版本将类似。
C:Program FilesMicrosoft Visual Studio2022CommunityCommon7IDEItemTemplatesCSharpCode1033Class
注意:这些文件在不同的地方,对于ASP。Net core项目的例子,所以你可能需要到处寻找。
也有一些.editorconfig
首选项,但它们只有在安装梅子头后才能工作。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 EDIT:
现在。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
编辑器配置文件不处理创建新类,在VS中是代码片段和模板——你从庞大的嵌套文件类型列表中选择的东西。如果你想让它们生成密封类,你必须编辑它们或者创建你自己的。
你可以去的另一个方向是编写一个代码分析器和修复提供程序,使你的类sealed
,提供一组你可以选择和实现的条件为真。这还有一个额外的好处,可以追溯地应用到您已经编写的代码中。