c# – SyntaxWalker不访问琐事

c# – SyntaxWalker不访问琐事,第1张

概述鉴于: 使用简单的语法walker我想访问trivias(确切地说是EndOfLineTrivia) public sealed class MyWalker : SyntaxWalker { public int Lines { get; set; } public int Trivia { get; set; } public int 鉴于:

使用简单的语法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){}
总结

以上是内存溢出为你收集整理的c# – SyntaxWalker不访问琐事全部内容,希望文章能够帮你解决c# – SyntaxWalker不访问琐事所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1220133.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存