如何用Roslyn判断ClassDeclarationSyntax是否为抽象类
判断ClassDeclarationSyntax是否为抽象类的方法
嘿,我来帮你搞定这个问题!要判断一个ClassDeclarationSyntax实例是不是抽象类,其实只需要检查它的修饰符集合里是否包含abstract关键字对应的语法标识就行。
核心实现代码
using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; // 假设你已经获取到了目标ClassDeclarationSyntax实例,命名为classDeclaration bool isAbstractClass = classDeclaration.Modifiers.Any(SyntaxKind.AbstractKeyword);
简单说明
ClassDeclarationSyntax的Modifiers属性是一个SyntaxTokenList,存储了类的所有修饰符(比如public、sealed、abstract等)- 调用
Any方法并传入SyntaxKind.AbstractKeyword,就能快速判断该类是否被abstract关键字修饰
如果你的场景需要更细致的检查(比如排除被错误标记的情况),也可以遍历Modifiers逐个验证,但上面的写法已经能覆盖绝大多数常规场景啦。
内容的提问来源于stack exchange,提问作者Hugo Jose
相关产品推荐
相关产品推荐

