public static IServiceCollection AddNybusLegacy(this IServiceCollection services, NybusConfigurator nybusConfigurator = null, SubscriptionsConfigurator subscriptionsConfigurator = null) { services.AddHostedService <NybusLegacyHostedService>(); services.AddSingleton <IContainer, ServiceProviderContainer>(); services.AddSingleton(Clock.Default); services.AddSingleton <ILoggerFactory, NybusLoggerFactoryAdapter>(); services.AddSingleton <NybusOptions>(); services.AddSingleton <IBusEngine, InMemoryBusEngine>(); services.AddSingleton <IBusBuilder>(sp => { var container = sp.GetRequiredService <IContainer>(); var engine = sp.GetRequiredService <IBusEngine>(); var loggerFactory = sp.GetRequiredService <ILoggerFactory>(); var options = new NybusOptions { Container = container, LoggerFactory = loggerFactory }; nybusConfigurator?.Invoke(options); var builder = new NybusBusBuilder(engine, options); subscriptionsConfigurator?.Invoke(builder); return(builder); }); services.AddSingleton(sp => { var builder = sp.GetRequiredService <IBusBuilder>(); return(builder.Build()); }); return(services); }