public static IContainer UseAssemblyRuleScanning(this IContainer container) { Assembly applicationServices = ApplicationServiceGenerator.Generate(typeof(Domain.Model._namespace).Assembly); var rules = new List<AssemblyScanningRule> { new AssemblyScanningRule(applicationServices), //for application services new AssemblyScanningRule(typeof(Samples.Domain.Workflow._namespace).Assembly), //for workflow services new AssemblyScanningRule(typeof(Samples.View._namespace).Assembly), //for view handlers new AssemblyScanningRule(typeof(Samples.View.Querying._namespace).Assembly) //for query handlers }; var typeProvider = new AssemblyTypesProvider(rules); container.Configure(expression => expression.For<IDispatcherTypesProvider>().Use(typeProvider).Singleton()); var handlersProvider = new DefaultDispatcherHandlersProvider(typeProvider); container.Configure(expression => expression.For<IDispatcherHandlersProvider>().Use(handlersProvider).Singleton()); var handlerActionsProvider = new DefaultDispatcherHandlerActionsProvider(); container.Configure(expression => expression.For<IDispatcherHandlerActionsProvider>().Use(handlerActionsProvider).Singleton()); var priorityProvider = new DefaultDispatcherPriorityProvider(); var subscriptionManager = new DispatcherSubscriptionsManager( handlersProvider, new DefaultDispatcherHandlerDescriptorsBuilder(priorityProvider), new DefaultDispatcherHandlerActionDescriptorsBuilder(handlerActionsProvider, priorityProvider) ); container.Configure(expression => expression.For<DispatcherSubscriptionsManager>().Use(subscriptionManager).Singleton()); return container; }