Le regroupement des dépendances liées dans des méthodes d'extension personnalisées est un moyen très courant de procéder. ASP.NET Core le fait déjà pour de nombreux services internes, et vous pouvez facilement développer en plus de cela et les configurer comme vous le souhaitez pour votre application. Par exemple, pour configurer l'authentification et l'autorisation:
public IServiceCollection AddSecurity(this IServiceCollection services)
{
services.AddAuthentication()
.AddCookie();
service.AddAuthorization(options =>
{
options.DefaultPolicy = …;
});
return services;
}
Vous pouvez faire de même pour vos services spécifiques à une application et les regrouper logiquement dans des méthodes d'extension distinctes.
Si vous avez de nombreux enregistrements de services très similaires, vous pouvez également utiliser un enregistrement basé sur une convention, par exemple en utilisant Scrutor . Par exemple, cela enregistre tous les services dans un certain espace de noms comme transitoires pour leur interface respective:
services.Scan(scan => scan
.FromAssemblyOf<Startup>()
.AddClasses(c => c.InNamespaces("MyApp.Services"))
.AsImplementedInterfaces()
.WithTransientLifetime()
);
Scrutor permet à des règles très complexes de rechercher des services, donc si vos services suivent un certain modèle, vous pourrez probablement trouver une règle pour cela.