SyntaxEditor 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
- 提供的原始根目录用作所有操作的“当前”根。 此“current”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
- 每个更改都有其给定 SyntaxNode 的跟踪,使用生成 SyntaxAnnotation跟踪所有更改的“当前”根。 这样,就可以在应用更改后找到同一个节点,从而改变树。
- 然后,每个更改将按添加到编辑器的顺序应用。
- 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示一个 ArgumentException。
- 该特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递委托,则会在当前根目录中找到该 SyntaxNode 委托。 然后,通过将当前节点替换为新的计算节点来更新“当前”根。
- 然后返回“current”根。
public ref class SyntaxEditor
public class SyntaxEditor
type SyntaxEditor = class
Public Class SyntaxEditor
- 继承
-
SyntaxEditor
- 派生
注解
上述编辑策略使编辑器客户端出错,添加更新父节点的更改,然后添加更新子节点的更改(除非父更改肯定会包含子节点),并尝试此操作将在运行时引发。 如果客户端需要同时更新子级和父级, 则应 先添加子更改,然后添加父更改。 父更改应传递适当的“计算”回调,以便看到子更改的结果。
如果客户端想要进行替换,则找到放入树中的 值SyntaxNode ,可以通过向该节点添加专用批注,然后在传递给“计算”回调的“current”节点中查找该值。
构造函数
| 名称 | 说明 |
|---|---|
| SyntaxEditor(SyntaxNode, HostWorkspaceServices) |
创建新的 SyntaxEditor 实例。 |
| SyntaxEditor(SyntaxNode, SolutionServices) |
创建新的 SyntaxEditor 实例。 |
| SyntaxEditor(SyntaxNode, Workspace) |
已过时.
创建新的 SyntaxEditor 实例。 |
属性
| 名称 | 说明 |
|---|---|
| Generator |
用于创建和更改SyntaxNode的 ASyntaxGenerator。 |
| OriginalRoot |
SyntaxNode构造时SyntaxEditor指定的值。 |
方法
| 名称 | 说明 |
|---|---|
| GetChangedRoot() |
返回更改的根节点。 |
| InsertAfter(SyntaxNode, IEnumerable<SyntaxNode>) |
在树中已存在的指定节点之后插入新节点。 |
| InsertAfter(SyntaxNode, SyntaxNode) |
在树中已存在的指定节点之后插入新节点。 |
| InsertBefore(SyntaxNode, IEnumerable<SyntaxNode>) |
在树中已存在的指定节点之前插入新节点。 |
| InsertBefore(SyntaxNode, SyntaxNode) |
在树中已存在的指定节点之前插入新节点。 |
| RemoveNode(SyntaxNode, SyntaxRemoveOptions) |
从树中删除节点。 |
| RemoveNode(SyntaxNode) |
从树中删除节点。 |
| ReplaceNode(SyntaxNode, Func<SyntaxNode,SyntaxGenerator,SyntaxNode>) |
将指定的节点替换为函数生成的节点。 |
| ReplaceNode(SyntaxNode, SyntaxNode) |
将指定的节点替换为其他节点。 |
| TrackNode(SyntaxNode) |
确保跟踪节点,即使节点未更改也是如此。 |
扩展方法
| 名称 | 说明 |
|---|---|
| AddAttribute(SyntaxEditor, SyntaxNode, SyntaxNode) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|
| AddAttributeArgument(SyntaxEditor, SyntaxNode, SyntaxNode) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|
| AddBaseType(SyntaxEditor, SyntaxNode, SyntaxNode) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|
| AddInterfaceType(SyntaxEditor, SyntaxNode, SyntaxNode) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|
| AddMember(SyntaxEditor, SyntaxNode, SyntaxNode) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|
| AddParameter(SyntaxEditor, SyntaxNode, SyntaxNode) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|
| AddReturnAttribute(SyntaxEditor, SyntaxNode, SyntaxNode) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|
| InsertMembers(SyntaxEditor, SyntaxNode, Int32, IEnumerable<SyntaxNode>) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|
| InsertParameter(SyntaxEditor, SyntaxNode, Int32, SyntaxNode) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|
| SetAccessibility(SyntaxEditor, SyntaxNode, Accessibility) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|
| SetExpression(SyntaxEditor, SyntaxNode, SyntaxNode) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|
| SetGetAccessorStatements(SyntaxEditor, SyntaxNode, IEnumerable<SyntaxNode>) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|
| SetModifiers(SyntaxEditor, SyntaxNode, DeclarationModifiers) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|
| SetName(SyntaxEditor, SyntaxNode, String) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|
| SetSetAccessorStatements(SyntaxEditor, SyntaxNode, IEnumerable<SyntaxNode>) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|
| SetStatements(SyntaxEditor, SyntaxNode, IEnumerable<SyntaxNode>) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|
| SetType(SyntaxEditor, SyntaxNode, SyntaxNode) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|
| SetTypeConstraint(SyntaxEditor, SyntaxNode, String, SpecialTypeConstraintKind, IEnumerable<SyntaxNode>) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|
| SetTypeParameters(SyntaxEditor, SyntaxNode, IEnumerable<String>) |
用于更改语法树的编辑器。 编辑器的工作原理是按 顺序提供要对特定树执行的更改列表。 为更改提供 SyntaxNode 它们将应用于创建编辑器的原始树中。 应用程序的语义如下所示:
|