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


SyntaxEditor Класс

Определение

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

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

Комментарии

Приведенная выше стратегия редактирования делает ошибку для клиента редактора при добавлении изменения, которое обновляет родительский узел, а затем добавляет изменение, которое обновляет дочерний узел (если только родительское изменение не содержит дочерний узел), и попытка будет вызываться во время выполнения. Если клиенту когда-либо потребуется обновить как дочерний, так и родительский, он должен сначала добавить дочернее изменение, а затем родительское изменение. А родительское изменение должно пройти соответствующий обратный вызов compute, чтобы увидеть результаты изменения дочернего элемента.

Если клиент хочет выполнить замену, найдите значение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 применяться в исходном дереве, для чего создается редактор. Семантика приложения выглядит следующим образом:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Применяется к