Beispiel #1
0
        static void Main()
        {
            // Configure your DI container
            var container = new UnityContainer();

            container.RegisterType <IUserRepository, InMemoryUserRepository>();
            container.RegisterType <ILogger, ConsoleLogger>();
            container.RegisterType(typeof(IHandle <CreateUser>), typeof(UserService));
            // Create common service locator adapter
            var unityServiceLocatorAdapter = new UnityServiceLocator(container);

            // Initilaize the AppDispatcher
            AppDispatcher.Initialize(app =>
            {
                app.UseCommonServiceLocator(unityServiceLocatorAdapter);
            });

            // Create a request
            var request = new CreateUser {
                Name = "Jane Smith"
            };

            // Handle it using the dispatcher, if DI is configured correctly
            // the message handler in your application service will handle it.
            AppDispatcher.Handle(request);
        }
Beispiel #2
0
        static void Main()
        {
            // Look ma, no DI container!
            var logger = new ConsoleLogger();
            Func <IUserRepository> userRepositoryFactory =
                () => new InMemoryUserRepository();

            AppDispatcher.Initialize(app =>
            {
                app.RegisterHandler <CreateUser>(createUserRequest =>
                {
                    UserServiceModule.CreateUser(createUserRequest,
                                                 userRepositoryFactory, logger);
                });
            });

            var request = new CreateUser {
                Name = "Jane Smith"
            };

            AppDispatcher.Handle(request);
        }
Beispiel #3
0
        static void Main()
        {
            var container = new Container();

            container.Register <IUserRepository, InMemoryUserRepository>();
            container.Register <ILogger, ConsoleLogger>();
            container.RegisterManyForOpenGeneric(typeof(IHandle <>), AppDomain.CurrentDomain.GetAssemblies());
            container.RegisterDecorator(typeof(IHandle <>), typeof(LoggingDecorator <>));

            var simpleInjectorServiceLocatorAdapter = new SimpleInjectorServiceLocatorAdapter(container);

            AppDispatcher.Initialize(app =>
            {
                // Decorating the pipline AND using IoC: you will see
                // the action pipleine below wraps any IoC decorators
                app.GlobalPipeline(pipeline => pipeline.Decorate(handler =>
                {
                    Console.WriteLine("before a");
                    handler();
                    Console.WriteLine("after a");
                }).Decorate(handler =>
                {
                    Console.WriteLine("before b");
                    handler();
                    Console.WriteLine("after b");
                }), true);

                app.UseCommonServiceLocator(simpleInjectorServiceLocatorAdapter);
            });

            var request = new CreateUser {
                Name = "Jane Smith"
            };

            AppDispatcher.Handle(request);

            Console.ReadLine();
        }