public static void WithMessagingExtensions(this IServiceCollection services, Action <MessagingSubscriberOptionsBuilder> subscriberOptionsBuilder = null) { services.Decorate <IEventStore, MessagingEventStoreDecorator>(); services.AddTransient(sp => { var builder = new MessagingSubscriberOptionsBuilder(sp.GetService <MessagingSubscriberOptions>()); subscriberOptionsBuilder?.Invoke(builder); return((IEventStoreSubscriber)ActivatorUtilities.CreateInstance(sp, typeof(MessagingEventStoreSubscriber), builder.Options)); }); services.AddSingleton <MessagingContextAccessor>(); services.AddSingleton <MessagingTopicResolver>(); }
private void RegisterHostedService(Type serviceType, Action <MessagingSubscriberOptionsBuilder> subscriberOptionsConfigurator = null, string topicName = null) { _serviceCollection.AddSingleton(sp => { var builder = new MessagingSubscriberOptionsBuilder(sp.GetService <MessagingSubscriberOptions>()); subscriberOptionsConfigurator?.Invoke(builder); return(topicName == null ? (IHostedService)ActivatorUtilities.CreateInstance(sp, serviceType, builder.Options) : (IHostedService)ActivatorUtilities.CreateInstance(sp, serviceType, builder.Options, topicName)); }); }