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


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

Классы

Имя Описание
DocumentEditor

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

ImportAdder
SolutionEditor

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

SymbolEditor

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

SymbolEditorExtensions
SyntaxEditor

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

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

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

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

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

Структуры

Имя Описание
DeclarationModifiers

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

Имя Описание
DeclarationKind
OperatorKind
SpecialTypeConstraintKind

Делегаты

Имя Описание
SymbolEditor.AsyncDeclarationEditAction

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

SymbolEditor.DeclarationEditAction

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