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:
- 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);
// ...
}
}
- Referenzio questa libreria dal progetto principale.
- 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.
Il Source Generator attualmente registra automaticamente gli endpoint tramite il metodo
app.MapEndpoints()per tutte le classi presenti nel progetto principale che implementano l'interfacciaIEndpointRouteHandlerBuilder. 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
IEndpointRouteHandlerBuilderanche nelle librerie esterne referenziate dal progetto Minimal API (senza ricorrere a soluzioni reflection comeMapEndpointsFromAssembly). 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:
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:
Attualmente è possibile solo con le classi presenti nel progetto principale. Vorrei che il Source Generator lavorasse anche con le classi
IEndpointRouteHandlerBuilderdefinite in progetti esterni referenziati.