ServiceProvider serviceProvider = services.BuildServiceProvider();
_logger = serviceProvider.GetRequiredService<ILogger<CommandHandler>>();
List<Type> ServicesToRegister = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(assembly => assembly.GetTypes())
.Where(type => (typeof(IServiceable).IsAssignableFrom(type)))
.Where(type => !type.IsInterface)
.ToList();
foreach (var service in ServicesToRegister)
{
Type implType = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(assembly => assembly.GetTypes())
.Where(type => type.IsAssignableFrom(service))
.Where(type => type != typeof(IServiceable))
.Where(type => type.IsInterface)
.FirstOrDefault();
services.AddSingleton(implType, service);
_logger.LogInformation("Added service '" + implType.Name + "' to the service bus.");
}