SyntaxEditor 类

定义

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
public ref class SyntaxEditor
public class SyntaxEditor
type SyntaxEditor = class
Public Class SyntaxEditor
继承
SyntaxEditor
派生

注解

上述编辑策略会使编辑器的客户端错误地添加更新父节点的更改,然后添加更新子节点 (的更改,除非父更改肯定包含子) ,并且尝试此操作将在运行时引发。 如果客户端需要同时更新子项和父级, 先添加子更改,再添加父更改。 父更改应传递适当的“计算”回调,以便查看子更改的结果。

如果客户端想要进行替换,请查找放入树中的 SyntaxNode ,这可以通过向该节点添加专用注释,然后在传递给“计算”回调的“当前”节点中查找它。

构造函数

SyntaxEditor(SyntaxNode, HostWorkspaceServices)

创建一个新的 SyntaxEditor 实例。

SyntaxEditor(SyntaxNode, SolutionServices)

创建一个新的 SyntaxEditor 实例。

SyntaxEditor(SyntaxNode, Workspace)
已过时.

创建一个新的 SyntaxEditor 实例。

属性

Generator

SyntaxGenerator用于创建和更改 SyntaxNode的 。

OriginalRoot

SyntaxNode构造 时SyntaxEditor指定的 。

方法

GetChangedRoot()

返回更改的根节点。

InsertAfter(SyntaxNode, IEnumerable<SyntaxNode>)

在树中已存在的指定节点之后插入新节点。

InsertAfter(SyntaxNode, SyntaxNode)

在树中已存在的指定节点之后插入新节点。

InsertBefore(SyntaxNode, IEnumerable<SyntaxNode>)

在树中已存在的指定节点之前插入新节点。

InsertBefore(SyntaxNode, SyntaxNode)

在树中已存在的指定节点之前插入新节点。

RemoveNode(SyntaxNode)

从树中删除节点。

RemoveNode(SyntaxNode, SyntaxRemoveOptions)

从树中删除节点。

ReplaceNode(SyntaxNode, Func<SyntaxNode,SyntaxGenerator,SyntaxNode>)

将指定的节点替换为 函数生成的节点。

ReplaceNode(SyntaxNode, SyntaxNode)

将指定的节点替换为其他节点。

TrackNode(SyntaxNode)

确保跟踪节点,即使它未更改。

扩展方法

AddAttribute(SyntaxEditor, SyntaxNode, SyntaxNode)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
AddAttributeArgument(SyntaxEditor, SyntaxNode, SyntaxNode)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
AddBaseType(SyntaxEditor, SyntaxNode, SyntaxNode)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
AddInterfaceType(SyntaxEditor, SyntaxNode, SyntaxNode)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
AddMember(SyntaxEditor, SyntaxNode, SyntaxNode)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
AddParameter(SyntaxEditor, SyntaxNode, SyntaxNode)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
AddReturnAttribute(SyntaxEditor, SyntaxNode, SyntaxNode)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
InsertMembers(SyntaxEditor, SyntaxNode, Int32, IEnumerable<SyntaxNode>)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
InsertParameter(SyntaxEditor, SyntaxNode, Int32, SyntaxNode)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
SetAccessibility(SyntaxEditor, SyntaxNode, Accessibility)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
SetExpression(SyntaxEditor, SyntaxNode, SyntaxNode)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
SetGetAccessorStatements(SyntaxEditor, SyntaxNode, IEnumerable<SyntaxNode>)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
SetModifiers(SyntaxEditor, SyntaxNode, DeclarationModifiers)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
SetName(SyntaxEditor, SyntaxNode, String)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
SetSetAccessorStatements(SyntaxEditor, SyntaxNode, IEnumerable<SyntaxNode>)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
SetStatements(SyntaxEditor, SyntaxNode, IEnumerable<SyntaxNode>)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
SetType(SyntaxEditor, SyntaxNode, SyntaxNode)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
SetTypeConstraint(SyntaxEditor, SyntaxNode, String, SpecialTypeConstraintKind, IEnumerable<SyntaxNode>)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。
SetTypeParameters(SyntaxEditor, SyntaxNode, IEnumerable<String>)

用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:

  1. 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
  2. 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
  3. 然后,每个更改将按添加到编辑器的顺序应用。
  4. 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException
  5. 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
  6. 然后返回“当前”根。

适用于