Esempio n. 1
0
        public void Execute(GeneratorExecutionContext context)
        {
            // check that the users compilation references the expected library
            if (!context.Compilation.ReferencedAssemblyNames.Any(ai => ai.Name.Equals("SaltLakeCity.Framework.Alpakabroker", StringComparison.OrdinalIgnoreCase)))
            {
                //context.ReportDiagnostic();
            }

            using var sourceGenContext = SourceGeneratorContext <Generator> .Create(context);

            if (context.SyntaxReceiver is not AlpakaEventSyntaxReceiver actorSyntaxReciver)
            {
                return;
            }

            foreach (var @event in actorSyntaxReciver.Events)
            {
                var alpakaEventModel        = AlpakaEventModelFactory.From(@event, sourceGenContext.GeneratorExecutionContext.Compilation);
                var alpakaEventEmitter      = TemplateGenerator.GenerateAlpakaEventEmitter(alpakaEventModel);
                var alpakaEventReceiverBase =
                    TemplateGenerator.GenerateAlpakaEventEventReceiverBase(alpakaEventModel);


                context.AddSource(alpakaEventEmitter.FileName, alpakaEventEmitter.SourceCode);
                context.AddSource(alpakaEventReceiverBase.FileName, alpakaEventReceiverBase.SourceCode);
            }
        }