public static IServiceCollection AddRabbitConnectionProvider(this IServiceCollection services) { services .AddScoped <IConnectionProvider <RabbitMQConnection> >((serviceProvider) => { var connectionStringProvider = serviceProvider.GetService <IConnectionStringProvider>(); var defaultConneciton = serviceProvider.GetService <ConnectionOptions>(); var connectionInfoConfigurator = serviceProvider.GetService <Action <ConnectionOptions> >(); connectionInfoConfigurator?.Invoke(defaultConneciton); var result = new RabbitMQConnectionProvider(connectionStringProvider, defaultConneciton, serviceProvider.GetService <ILogger <RabbitMQConnection> >()); return(result); }); return(services); }
public static IServiceCollection AddRabbitConnectionProvider(this IServiceCollection services, ServiceLifetime lifetime) { services .Add( new ServiceDescriptor( typeof(IConnectionProvider <RabbitMQConnection>), (serviceProvider) => { var connectionStringProvider = serviceProvider.GetService <IConnectionStringProvider>(); var defaultConneciton = serviceProvider.GetService <ConnectionOptions>(); var connectionInfoConfigurator = serviceProvider.GetService <Action <ConnectionOptions> >(); connectionInfoConfigurator?.Invoke(defaultConneciton); var result = new RabbitMQConnectionProvider(connectionStringProvider, defaultConneciton, serviceProvider.GetService <ILogger <RabbitMQConnection> >()); return(result); }, lifetime) ); return(services); }