C#9 top-level statements文件是否支持添加Attribute特性?
C# 顶级语句文件添加抑制特性解决方案
在C#9及更高版本的顶级语句文件中添加SuppressMessage特性完全可行,有两种常用实现方案:
- 方案一:显式声明partial Program类挂载特性
顶级语句的代码最终会被编译器编译到隐式生成的Program类的Main方法中,你只需要在当前文件的顶级语句之前,手动声明一个partial的Program类,将抑制特性贴到该类上即可作用于当前文件的所有顶级语句逻辑。
[SuppressMessage("StyleCop.CSharp.LayoutRules", "SA1516:ElementsMustBeSeparatedByBlankLine", Justification = "Reviewed.")] partial class Program { } // 下方为原有顶级语句逻辑 Console.WriteLine("业务代码");
- 方案二:使用程序集级抑制特性指定文件级作用域
你可以直接声明程序集级的SuppressMessage特性,通过指定Scope = "file"参数,让该抑制规则仅对当前文件生效,不会影响项目内的其他代码文件。
[assembly: SuppressMessage("StyleCop.CSharp.LayoutRules", "SA1516:ElementsMustBeSeparatedByBlankLine", Scope = "file", Justification = "Reviewed.")] // 下方为原有顶级语句逻辑 Console.WriteLine("业务代码");
针对你提到的SA1516规则在顶级语句场景下的已知Bug,优先选择方案一兼容性更好,规则作用范围更精准。
内容的提问来源于stack exchange,提问作者Iván
相关产品推荐
相关产品推荐

