SyntaxEditor 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
用于对语法树进行更改的编辑器。 编辑器的工作方式是按 顺序提供要对特定树执行的更改列表。 在为其创建编辑器的原始树中,会提供一个 SyntaxNode 更改。 应用程序的语义如下所示:
- 提供的原始根用作所有操作的“当前”根。 此“当前”根将不断更新,成为新的“当前”根。 原始根永远不会更改。
- 使用 生成SyntaxNodeSyntaxAnnotation跟踪所有更改的“当前”根来跟踪每个更改。 这允许在应用更改树的先前更改后找到相同的节点。
- 然后,每个更改将按添加到编辑器的顺序应用。
- 更改首先尝试在“当前”根目录中查找它 SyntaxNode 。 如果找不到该节点,操作将失败并显示 ArgumentException。
- 特定更改将在该节点上运行,根据更改删除、替换或插入该节点。 如果更改作为其“计算”参数传递了委托,则会为其提供 SyntaxNode 在当前根目录中找到的 。 然后,将通过将当前节点替换为新的计算节点来更新“current”根。
- 然后返回“当前”根。
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, 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 更改。 应用程序的语义如下所示:
|