Поделиться через


Microsoft.CodeAnalysis.Editing Пространство имен

Классы

DocumentEditor

Редактор для внесения изменений в дерево синтаксиса документа.

ImportAdder
SolutionEditor

Редактор для внесения изменений в несколько документов в решении.

SymbolEditor

Редактор для внесения изменений в объявления источника символов.

SymbolEditorExtensions
SyntaxEditor

Редактор для внесения изменений в дерево синтаксиса. Редактор предоставляет список изменений, которые нужно выполнить в определенном дереве по порядку. Изменения будут SyntaxNode применяться в исходном дереве, для чего создается редактор. Семантика приложения выглядит следующим образом:

  1. Предоставленный исходный корень используется в качестве "текущего" корня для всех операций. Этот "текущий" корень будет постоянно обновляться, превратившись в новый "текущий" корень. Исходный корень никогда не изменяется.
  2. Каждое изменение отслеживается SyntaxNode с помощью SyntaxAnnotation, создающего "текущий" корень, который отслеживает их все. Это позволяет найти тот же узел после применения предыдущих изменений, которые изменяют дерево.
  3. Затем каждое изменение применяется в том порядке, в который оно было добавлено в редактор.
  4. Изменение сначала пытается найти его SyntaxNode в "текущем" корне. Если этот узел не найден, операция завершится сбоем с .ArgumentException
  5. Конкретное изменение будет выполняться на этом узле, удаляя, заменяя или вставляя его в соответствии с изменением. Если изменение передается делегату в качестве аргумента "вычисление", ему будет предоставлен объект , найденный SyntaxNode в текущем корневом каталоге. Затем корневой каталог current будет обновлен путем замены текущего узла новым вычисляемым узлом.
  6. Затем возвращается текущий корень.
SyntaxEditorExtensions
SyntaxGenerator

Фабрика, не зависящая от языка, для создания узлов синтаксиса.

Этот API можно использовать для создания узлов синтаксиса для конкретного языка, которые семантически похожи между языками.

Деревья, созданные этим API, будут стараться учитывать предпочтения пользователей, когда это возможно. Например, создание MemberAccessExpression(SyntaxNode, String) будет выполняться таким образом, чтобы "this." или "Me." было упрощено в соответствии с предпочтениями пользователя, если Simplifier используется.

Структуры

DeclarationModifiers

Перечисления

DeclarationKind
OperatorKind
SpecialTypeConstraintKind

Делегаты

SymbolEditor.AsyncDeclarationEditAction

Действие, которое вносит изменения в узел объявления в SyntaxTree.

SymbolEditor.DeclarationEditAction

Действие, которое вносит изменения в узел объявления в SyntaxTree.