You can register all classes in a project (or folder) that implement a certain interface. See the code below how to do this.
using System.Linq; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; var builder = WebApplication.CreateBuilder(); var type = typeof(IBootstrap); var types = System.AppDomain.CurrentDomain.GetAssemblies() .SelectMany(x => x.GetTypes()) .Where(p => type.IsAssignableFrom(p) && p.IsClass); foreach (var p in types) { var config = (IBootstrap)System.Activator.CreateInstance(p)!; config.Register(builder.Services); } var app = builder.Build(); app.Run(context => { var person = context.RequestServices.GetService<Person>()!; var greeting = context.RequestServices.GetService<Greeting>()!; return context.Response.WriteAsync($"{greeting.Message} {person.Name}"); }); app.Run(); public interface IBootstrap { void Register(IServiceCollection services); } public class Registration1 : IBootstrap { public void Register(IServiceCollection services) { services.AddTransient(x => new Person { Name = "Mahmoud" }); } } public class Registration2 : IBootstrap { public void Register(IServiceCollection services) { services.AddTransient(x => new Greeting { Message = "Good Morning" }); } } public class Person { public string Name { get; set; } = string.Empty; } public class Greeting { public string Message { get; set; } = string.Empty; }