Skip to content

[WIP] Extend source generator to register external library endpoints - #102

Closed
marcominerva with Copilot wants to merge 1 commit into
masterfrom
copilot/extend-source-generator-endpoints
Closed

marcominerva with Copilot wants to merge 1 commit into
masterfrom
copilot/extend-source-generator-endpoints

Conversation

Copilot AI commented Mar 5, 2026

Copy link
Copy Markdown

Thanks for assigning this issue to me. I'm starting to work on it and will keep this PR's description up to date as I form a plan and make progress.

Original prompt

This section details on the original issue you should resolve

<issue_title>[Source Generator] Registrazione automatica degli endpoint definiti in librerie esterne</issue_title>
<issue_description>Il Source Generator attualmente registra automaticamente gli endpoint tramite il metodo app.MapEndpoints() per tutte le classi presenti nel progetto principale che implementano l'interfaccia IEndpointRouteHandlerBuilder. Tale interfaccia è creata automaticamente dal Source Generator stesso. Tuttavia, non consente di rilevare ed esporre automaticamente endpoint definiti in librerie esterne.

Proposta di feature:
Sarebbe utile estendere il Source Generator in modo che possa rilevare automaticamente le classi che implementano IEndpointRouteHandlerBuilder anche nelle librerie esterne referenziate dal progetto Minimal API (senza ricorrere a soluzioni reflection come MapEndpointsFromAssembly). Ciò permetterebbe di registrare in modo performante e compatibile con Native AOT endpoint definiti in qualsiasi progetto referenziato, migliorando modularità, riuso del codice e organizzazione.

Scenario d'uso desiderato:

  1. Definisco una classe endpoint in una libreria esterna:
    namespace MyEndpointsLibrary.Endpoints;
    
    public class PeopleEndpoints : IEndpointRouteHandlerBuilder
    {
        public static void MapEndpoints(IEndpointRouteBuilder endpoints)
        {
            endpoints.MapGet("/api/people", GetList);
            // ...
        }
    }
  2. Referenzio questa libreria dal progetto principale.
  3. Invocando app.MapEndpoints();, il Source Generator registra automaticamente anche gli endpoint definiti in librerie esterne, senza necessità di ulteriori chiamate, overload o uso della reflection.

Vantaggi:

  • Non è più necessario duplicare la definizione degli endpoint nel progetto principale.
  • Permette progetti più modulari e condivisibili.
  • Mantenimento della compatibilità Native AOT e dei vantaggi prestazionali del Source Generator.

Attualmente è possibile solo con le classi presenti nel progetto principale. Vorrei che il Source Generator lavorasse anche con le classi IEndpointRouteHandlerBuilder definite in progetti esterni referenziati.</issue_description>

Comments on the Issue (you are @copilot in this section)

  • Fixes marcominerva/MinimalHelpers#101

🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.

@marcominerva

Copy link
Copy Markdown
Owner

@copilot I don't see any changes in your commit.

@marcominerva marcominerva removed their assignment Mar 5, 2026
Copilot stopped work on behalf of marcominerva due to an error March 30, 2026 07:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants