public static BusPluginOptions UseModel(this BusPluginOptions options)
        {
            options.Services
            .AddScoped <IEventPublisher, EventPublisher>()
            .AddScoped <ICommandPublisher, CommandPublisher>()
            .AddScoped <IRequestPublisher, RequestPublisher>()
            .AddScoped <IQueryPublisher, QueryPublisher>();

            return(options);
        }
示例#2
0
        public static BusPluginOptions Observable(this BusPluginOptions options)
        {
            options.Services
            .AddScoped <IArgumentResolver, ObservableMessageArgumentResolver>()
            .AddScoped <IReturnValueHandler, ObservableMessagesReturnValueHandler>()
            .AddSingleton <MessageObservable, MessageObservable>()
            .AddSingleton <ISubscriber, MessageObservable>()
            .AddSingleton(typeof(IMessageObservable <>), typeof(MessageObservable <>));

            return(options);
        }
        public static IServiceCollection AddBus(this IServiceCollection services, Action <BusPluginOptions> optionsAction = null)
        {
            var pluginOptions = new BusPluginOptions(services);

            optionsAction?.Invoke(pluginOptions);

            return(services
                   .AddSingleton <BusOptions>()
                   .AddSingleton <BusConfigurator>()
                   .AddScoped <SubscribedMethodInvoker>()
                   .AddScoped <SubscribedMethodArgumentsResolver>()
                   .AddScoped <IArgumentResolver, EnumerableMessageArgumentResolver>()
                   .AddScoped <IArgumentResolver, SingleMessageArgumentResolver>()
                   .AddScoped <IArgumentResolver, ServiceProviderAdditionalArgumentResolver>()
                   .AddScoped <ReturnValueHandler>()
                   .AddScoped <IReturnValueHandler, EnumerableMessagesReturnValueHandler>()
                   .AddScoped <IReturnValueHandler, SingleMessageReturnValueHandler>()
                   .AddScoped <IPublisher, Publisher>());
        }