Как генерировать источник, используя заполнитель всех преобразованных узловC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как генерировать источник, используя заполнитель всех преобразованных узлов

Сообщение Anonymous »

Используя генератор источника, я хочу сгенерировать один файл, который создан с использованием списка агрегирования всех преобразованных узлов (вместо одного по одному). < /p>
Я использую пример на основе перечисления, так как они являются общими. Дано (упрощено для ясности): < /p>

Код: Выделить всё

public void Initialize(IncrementalGeneratorInitializationContext context)
{
IncrementalValuesProvider sources = context.SyntaxProvider
.ForAttributeWithMetadataName(
MyEnumAttributeFullName,
predicate: (node, _) => node is EnumDeclarationSyntax,
transform: MyTransform)
.WithTrackingName("Gathering")
.Where(static node => node is not null)
.WithTrackingName("RemovingNulls");

context.RegisterSourceOutput(sources, static (context, sources) => Execute(context, in sources));
}
В этом примере Execute используется для генерации исходного файла, основанного на преобразованной MyenumData для каждого перечисленного с MyEnumattributefullName. Я ищу эффективное решение времени компиляции, которое не включает отражение времени выполнения. < /P>
По сути, я ищу эквивалент: < /p>
public void RegisterSourceOutput(IncrementalValuesProvider source, Action action)
< /code>
используется для создания для генерации одного файла, который создан с использованием агрегированного списка всех преобразованных узлов. В этом примере перечисления это может быть использовано для создания реестра всех перечислений, помеченных MyEnumattributeFullName.IncrementalValuesProvider = ???
< /code>
.... и зарегистрируйте обработчик для обработки этого единственного узла. Но я не мог понять, как выполнить шаг населения. Кажется, что это будет обычная схема использования, но я ничего не мог найти.

Подробнее здесь: https://stackoverflow.com/questions/784 ... rmed-nodes
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»