2

我们的目标是使用 Roslyn 为 C# 类构建一个玩具抽象语法树。我们只想展示一个类的基本结构,而不是遍历整个 AST。例如(取自 MSDN):

class TimePeriod  
{
  private double seconds;

  public double Hours
  {
      get { return seconds / 3600; }
      set { seconds = value * 3600; }
  }
}

让我们只考虑属性Hours;我们只对提取修饰符 ( public)、返回类型 ( double)、标识符 ( Hours) 的标记感兴趣,而对于两个访问器的主体,我们想直接将其提取为String.

但是,当我们通过 roslyn(显示在屏幕转储中)时,当我们获取访问器的主体时,我们没有找到代表整个字符串的字段。实现这一目标的正确方法是什么?

4

1 回答 1

3

显而易见的方法是调用ToString

返回此节点的字符串表示形式,不包括其前导和尾随琐事。

如果您想要前导和尾随琐事(空格,评论,...),有ToFullString

返回此节点的完整字符串表示形式,包括其前导和尾随琐事。

出于效率目的,您可能还对该方法感兴趣,该WriteTo方法ToFullString将产生的内容写入 a TextWriter,避免中间字符串分配:

将此节点的全文写入指定的 TextWriter。

于 2016-04-09T21:52:48.647 回答