c# – SyntaxWalker不访问琐事
发布时间:2020-12-15 23:34:21 所属栏目:百科 来源:网络整理
导读:鉴于: 使用简单的语法walker我想访问trivias(确切地说是EndOfLineTrivia) public sealed class MyWalker : SyntaxWalker { public int Lines { get; set; } public int Trivia { get; set; } public int Node { get; set; } public override void Visit(Syn
鉴于:
使用简单的语法walker我想访问trivias(确切地说是EndOfLineTrivia) public sealed class MyWalker : SyntaxWalker { public int Lines { get; set; } public int Trivia { get; set; } public int Node { get; set; } public override void Visit(SyntaxNode node) { Node++; base.Visit(node); } protected override void VisitTrivia(SyntaxTrivia trivia) { Trivia++; base.VisitTrivia(trivia); } } 我这样叫沃克: SyntaxTree node = CSharpSyntaxTree.ParseText(sourceCode); var root = node.GetRoot(); var walker = new LocWalker(); 问题 永远不会调用重写的VisitTrivia方法. 解决方法
你需要的是将walker的深度设置为SyntaxWalkerDepth.Trivia(或SyntaxWalkerDepth.StructuredTrivia).默认深度是SyntaxWalkerDepth.Node,这意味着不访问琐事.
为此,请调用基础构造函数: public MyWalker() : base(SyntaxWalkerDepth.Trivia) { } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |