Я использую пример на основе перечисления, так как они являются общими. Дано (упрощено для ясности): < /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));
}
По сути, я ищу эквивалент: < /p>
public void RegisterSourceOutput(IncrementalValuesProvider source, Action action)
< /code>
используется для создания для генерации одного файла, который создан с использованием агрегированного списка всех преобразованных узлов. В этом примере перечисления это может быть использовано для создания реестра всех перечислений, помеченных MyEnumattributeFullName.IncrementalValuesProvider = ???
< /code>
.... и зарегистрируйте обработчик для обработки этого единственного узла. Но я не мог понять, как выполнить шаг населения. Кажется, что это будет обычная схема использования, но я ничего не мог найти.
Подробнее здесь: https://stackoverflow.com/questions/784 ... rmed-nodes