コード例 #1
0
        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);
        }