Esempio n. 1
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddMvc();

            var builder = new ContainerBuilder();

            builder.RegisterInstance(Configuration).AsImplementedInterfaces().SingleInstance();
            builder.RegisterModule <LibAutofacModule>();
            // Register dependencies, populate the services from
            // the collection, and build the container. If you want
            // to dispose of the container at the end of the app,
            // be sure to keep a reference to it as a property or field.
            var mediatorBuilder = new MediatorBuilder()
                                  .RegisterHandlers(LibAssembly.Assembly)
                                  .ConfigureGlobalReceivePipe(x =>
            {
            })
                                  .ConfigureCommandReceivePipe(x =>
            {
            })
                                  .ConfigureRequestPipe(x =>
            {
            });

            builder.RegisterMediator(mediatorBuilder);
            builder.Populate(services);
            this.ApplicationContainer = builder.Build();

            // Create the IServiceProvider based on the container.
            return(new AutofacServiceProvider(this.ApplicationContainer));
        }
Esempio n. 2
0
        public static MediatorBuilder AddLatransMedaitor(
            this IServiceCollection services,
            Action <IMediatorBuilder>?configure = null
            )
        {
            var builder = new MediatorBuilder();

            services.AddOptions <ActivityExecutionConfigurationOptions>();
            services.AddTransient <ActivityExecutionConfigurationDefaults>();
            services.AddScoped <ILocalDisposables, LocalDisposables>();
            services.AddScoped <IMediatorClientFactory, MediatorClientFactory>();
            services.AddTransient <IMediatorClient, MediatorClient>();
            services.AddSingleton <IMediatorService>((serviceProvider) => {
                IMediatorService result;
                lock (serviceProvider) {
                    builder.Build();
                    var options = builder.GetOptions();
                    result      = new MediatorService(options);
                }
                return(result);
            });
            if (configure is object)
            {
                configure(builder);
            }
            return(builder);
        }
Esempio n. 3
0
 protected static void Init(TestContext testContext)
 {
     SetTestSettings();
     Mediator = MediatorBuilder.BuildMediator();
     _writeUserProfileRepository = ResolverRoot.Resolve <IWriteUserProfileRepository>();
     FillDatabaseWithTestData();
 }
Esempio n. 4
0
 private static void RegisterHandlers(Container containerBuilder, MediatorBuilder builder)
 {
     foreach (var binding in builder.MessageHandlerRegistry.MessageBindings)
     {
         containerBuilder.Register(binding.HandlerType);
     }
 }
Esempio n. 5
0
        private static async Task MainAsync()
        {
            var containerBuilder = new ContainerBuilder();

            ConfigurationConfigurator.RegisterConfigurationSettings()
            .FromAssemblies(typeof(Program).Assembly)
            .RegisterWithContainer(configSetting => containerBuilder.RegisterInstance(configSetting)
                                   .AsSelf()
                                   .SingleInstance())
            .DoYourThing();
            containerBuilder.RegisterType <BusConfiguration>().SingleInstance().AsImplementedInterfaces();
            containerBuilder.Register(container =>
            {
                var busConfig       = container.Resolve <IBusConfiguration>();
                var mediatorBuilder = new MediatorBuilder();
                return(mediatorBuilder.RegisterHandlers(typeof(Program).Assembly)
                       .ConfigurePublishPipe(x =>
                {
                    x.UseMessageQueue(() => busConfig,
                                      () => true);
                }).Build());
            }).AsImplementedInterfaces();


            using (var container = containerBuilder.Build())
            {
                var mediator = container.Resolve <IMediator>();
                await mediator.SendAsync(new CalculateTotalCommand(1, 2));
            }
        }
        void GivenAMediator()
        {
            ClearBinding();
            var builder = new MediatorBuilder();

            _mediator = builder.RegisterHandlers(() =>
            {
                var binding = new List <MessageBinding>()
                {
                    new MessageBinding(typeof(TestBaseCommand), typeof(TestBaseCommandHandlerRaiseEvent)),
                    new MessageBinding(typeof(TestEvent), typeof(TestEventHandler))
                };
                return(binding);
            })
                        .ConfigureGlobalReceivePipe(x =>
            {
                x.UseConsoleLogger1();
            })
                        .ConfigureCommandReceivePipe(x =>
            {
                x.UseConsoleLogger2();
            })
                        .ConfigurePublishPipe(x =>
            {
                x.UseConsoleLogger3();
            })
                        .Build();
        }
Esempio n. 7
0
        public void GivenAMediatorAndTwoMiddlewares()
        {
            ClearBinding();
            var builder = new MediatorBuilder();

            _mediator = builder.RegisterHandlers(() =>
            {
                var binding = new List <MessageBinding>()
                {
                    new MessageBinding(typeof(GetGuidRequest), typeof(GetGuidRequestHandler)),
                    new MessageBinding(typeof(GetGuidRequest), typeof(GetGuidRequestHandler2))
                };
                return(binding);
            })
                        .ConfigureCommandReceivePipe(x =>
            {
                x.UseConsoleLogger1();
                x.UseConsoleLogger2();
            })
                        .ConfigureRequestPipe(x =>
            {
                x.UseConsoleLogger3();
            })
                        .Build();
        }
Esempio n. 8
0
        public void GivenAMediatorBuildConnectsToAllPipelines()
        {
            base.ClearBinding();
            var mediaBuilder = new MediatorBuilder();

            mediaBuilder.RegisterHandlers(TestUtilAssembly.Assembly)
            .ConfigureGlobalReceivePipe(global =>
            {
                global.UseSimpleMiddleware1();
            })
            .ConfigureCommandReceivePipe(x =>
            {
                x.UseSimpleMiddleware1();
            })
            .ConfigureEventReceivePipe(e =>
            {
                e.UseSimpleMiddleware1();
            })
            .ConfigurePublishPipe(p =>
            {
                p.UseSimpleMiddleware1();
            }).ConfigureRequestPipe(r =>
            {
                r.UseSimpleMiddleware1();
            });
            var containerBuilder = new ContainerBuilder();

            containerBuilder.RegisterType <SimpleService>().AsSelf();
            containerBuilder.RegisterType <AnotherSimpleService>().AsSelf();
            containerBuilder.RegisterMediator(mediaBuilder);
            _container = containerBuilder.Build();
        }
Esempio n. 9
0
 public static MediatorBuilder RegisterUnduplicatedHandlers(this MediatorBuilder mediatorBuilder)
 {
     return(mediatorBuilder.RegisterHandlers(
                assembly => assembly.DefinedTypes.Where(t => t.Name != nameof(MultiRequestsHandler) &&
                                                        t.Name != nameof(MultiEventsHandler) &&
                                                        t.Name != nameof(MultiCommandsHandler)),
                TestUtilAssembly.Assembly));
 }
Esempio n. 10
0
        protected override void Load(ContainerBuilder builder)
        {
            base.Load(builder);
            var mediatorBuilder = new MediatorBuilder();

            mediatorBuilder.RegisterHandlers(this.GetType().Assembly);
            builder.RegisterMediator(mediatorBuilder);
        }
Esempio n. 11
0
        private static IUnityContainer ConfigureContainer()
        {
            var container = new UnityContainer();

            var mediaBuilder = new MediatorBuilder();

            mediaBuilder.RegisterHandlers(typeof(MediatorNetUnit).Assembly);
            UnityExtensioins.Configure(mediaBuilder, container);

            return(container);
        }
Esempio n. 12
0
        public static void RegisterMediator(this Container container, MediatorBuilder mediatorBuilder)
        {
            container.RegisterSingleton(mediatorBuilder);
            container.Register(() =>
            {
                var resolver = new SimpleInjectorDependencyScope(container);
                return(mediatorBuilder.Build(resolver));
            }, Lifestyle.Scoped);

            RegisterHandlers(container, mediatorBuilder);
        }
Esempio n. 13
0
        void ConfigureMediator(IServiceCollection services)
        {
            services
            .AddTransient <SimpleService>()
            .AddTransient <AnotherSimpleService>()
            .AddTransient <ICalculateService, CalculateService>()
            .AddTransient <IBoardcastService, BoardcastService>();
            var mediatorBuilder = new MediatorBuilder();

            mediatorBuilder.RegisterHandlers(assembly => assembly.DefinedTypes.Where(t => t.Name != nameof(MultiRequestsHandler)), TestUtilAssembly.Assembly, typeof(Startup).Assembly);
            services.RegisterMediator(mediatorBuilder);
        }
        void GivenAContainer()
        {
            var mediaBuilder = new MediatorBuilder();

            mediaBuilder.RegisterUnduplicatedHandlers()
            .ConfigureCommandReceivePipe(x =>
            {
                x.UseSimpleMiddleware();
            });
            _container = new Container();
            _container.Configure(mediaBuilder);
        }
        public void GivenAMediator()
        {
            var builder = new MediatorBuilder();

            _mediator = builder.RegisterHandlers(() =>
            {
                var binding = new List <MessageBinding> {
                    new MessageBinding(typeof(TestEvent), typeof(TestEventHandler))
                };
                return(binding);
            }).Build();
        }
        public void GivenAContainer()
        {
            var mediaBuilder = new MediatorBuilder();

            mediaBuilder.RegisterHandlers(TestUtilAssembly.Assembly)
            .ConfigureCommandReceivePipe(x =>
            {
                x.UseSimpleMiddleware();
            });
            _container = new Container();
            StructureMapExtensions.Configure(mediaBuilder, _container);
        }
Esempio n. 17
0
        public void GivenAMediatorWithNoPipeline()
        {
            var builder = new MediatorBuilder();

            _mediator = builder.RegisterHandlers(() =>
            {
                var binding = new List <MessageBinding> {
                    new MessageBinding(typeof(TestBaseCommand), typeof(TestBaseCommandHandler))
                };
                return(binding);
            }).Build();
        }
Esempio n. 18
0
        void GivenAContainer()
        {
            var mediaBuilder = new MediatorBuilder();

            mediaBuilder.RegisterUnduplicatedHandlers()
            .ConfigureCommandReceivePipe(x =>
            {
                x.UseSimpleMiddleware();
            });
            _container = new Container();
            _container.Options.DefaultScopedLifestyle = new LifetimeScopeLifestyle();
            _container.RegisterMediator(mediaBuilder);
        }
Esempio n. 19
0
        public void GivenAContainer()
        {
            var mediaBuilder = new MediatorBuilder();

            mediaBuilder.RegisterHandlers(TestUtilAssembly.Assembly)
            .ConfigureCommandReceivePipe(x =>
            {
                x.UseSimpleMiddleware();
            });
            _container = new Container();
            _container.Options.DefaultScopedLifestyle = new LifetimeScopeLifestyle();
            InjectHelper.RegisterMediator(_container, mediaBuilder);
        }
        void GivenAMediator()
        {
            var builder = new MediatorBuilder();

            _mediator = builder.RegisterHandlers(() =>
            {
                var binding = new List <MessageBinding>()
                {
                    new MessageBinding(typeof(TestBaseCommand), typeof(TestBaseCommandHandler)),
                    new MessageBinding(typeof(DerivedTestBaseCommand), typeof(DerivedTestBaseCommandHandler)),
                };
                return(binding);
            }).Build();
        }
Esempio n. 21
0
        public void GivenAMediator()
        {
            var builder = new MediatorBuilder();

            _mediator = builder.RegisterHandlers(() =>
            {
                var binding = new List <MessageBinding>
                {
                    new MessageBinding(typeof(AnotherCommand), typeof(MultiCommandsHandler)),
                    new MessageBinding(typeof(DerivedTestBaseCommand), typeof(MultiCommandsHandler))
                };
                return(binding);
            }).Build();
        }
        void GivenAContainer()
        {
            var mediaBuilder = new MediatorBuilder();

            mediaBuilder.RegisterUnduplicatedHandlers()
            .ConfigureCommandReceivePipe(x =>
            {
                x.UseSimpleMiddleware();
            });
            _container = new ServiceCollection()
                         .AddTransient <SimpleService>()
                         .AddTransient <AnotherSimpleService>();
            _container.RegisterMediator(mediaBuilder);
        }
Esempio n. 23
0
        IMediator SetupEventMediatorWithExplicitBindings()
        {
            var builder = new MediatorBuilder();

            return(builder.RegisterHandlers(() =>
            {
                var binding = new List <MessageBinding>
                {
                    new MessageBinding(typeof(SimpleEvent), typeof(MultiEventsHandler)),
                    new MessageBinding(typeof(TestEvent), typeof(MultiEventsHandler))
                };
                return binding;
            }).Build());
        }
Esempio n. 24
0
        public static void Configure(this IContainer container, MediatorBuilder builder)
        {
            container.Configure(x =>
            {
                x.For <MediatorBuilder>().Add(builder).Singleton();
                x.For <IDependencyScope>().Use(() => new StructureMapDependencyScope(container).BeginScope());

                x.For <IMediator>().Use(context => builder.Build(context.GetInstance <IDependencyScope>()));
                foreach (var binding in builder.MessageHandlerRegistry.MessageBindings)
                {
                    x.AddType(binding.HandlerType, binding.HandlerType);
                }
            });
        }
        void GivenAMediator()
        {
            ClearBinding();
            var builder = new MediatorBuilder();

            _mediator = builder.RegisterHandlers(() =>
            {
                var binding = new List <MessageBinding> {
                    new MessageBinding(typeof(TestBaseCommand), typeof(SimpleCommandHandler))
                };
                return(binding);
            })
                        .Build();
        }
Esempio n. 26
0
        IMediator SetupRequestMediatorWithExplicitBindings()
        {
            var builder = new MediatorBuilder();

            return(builder.RegisterHandlers(() =>
            {
                var binding = new List <MessageBinding>()
                {
                    new MessageBinding(typeof(GetGuidRequest), typeof(MultiRequestsHandler)),
                    new MessageBinding(typeof(SimpleRequest), typeof(MultiRequestsHandler))
                };
                return binding;
            }).Build());
        }
Esempio n. 27
0
        void GivenAContainer()
        {
            ClearBinding();
            var mediaBuilder = new MediatorBuilder();

            mediaBuilder.RegisterUnduplicatedHandlers()
            .ConfigureCommandReceivePipe(x =>
            {
                x.UseSimpleMiddleware();
            });
            _container = new ServiceCollection();

            _container.RegisterMediator(mediaBuilder);
        }
Esempio n. 28
0
        public void GivenAContainer()
        {
            var mediaBuilder = new MediatorBuilder();

            mediaBuilder.RegisterHandlers(TestUtilAssembly.Assembly)
            .ConfigureCommandReceivePipe(x =>
            {
                x.UseSimpleMiddleware();
            });
            var containerBuilder = new ContainerBuilder();

            containerBuilder.RegisterMediator(mediaBuilder);
            _container = containerBuilder.Build();
        }
Esempio n. 29
0
        IMediator SetupCommandMediatorWithExplicitBindings()
        {
            var builder = new MediatorBuilder();

            return(builder.RegisterHandlers(() =>
            {
                var binding = new List <MessageBinding>
                {
                    new MessageBinding(typeof(AnotherCommand), typeof(MultiCommandsHandler)),
                    new MessageBinding(typeof(DerivedTestBaseCommand), typeof(MultiCommandsHandler))
                };
                return binding;
            }).Build());
        }
Esempio n. 30
0
        public void GivenAMediatorWithUnitOfWork()
        {
            var builder = new MediatorBuilder();

            builder.RegisterHandlers(typeof(ExceptionInHandlerShouldRollbackTransaction).Assembly)
            .ConfigureGlobalReceivePipe(x =>
            {
                x.UseUnitOfWork(() => true);
            });

            ContainerBuilder.RegisterMediator(builder);

            _container = ContainerBuilder.Build();
        }