使用简单的语法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不访问琐事所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)