static ServiceLayerComponentResolving() { IoC.Container = null; KnownTypeProvider.ClearAllKnownTypes(); requestHandlerAssemblies = new List <Assembly> { Assembly.GetExecutingAssembly(), typeof(RequestHandlerB).Assembly }; requestResponseAssemblies = new List <Assembly> { Assembly.GetExecutingAssembly(), typeof(RequestB).Assembly }; configuration = new ServiceLayerConfiguration(requestHandlerAssemblies[0], requestResponseAssemblies[0], Activator.CreateInstance <TContainer>()); configuration.AddRequestHandlerAssembly(requestHandlerAssemblies[1]); configuration.AddRequestAndResponseAssembly(requestResponseAssemblies[1]); configuration.Use <RequestHandlerBasedConventions>(); configuration.Initialize(); }
/// <summary> /// Configures the agatha. /// </summary> /// <param name="appContainer">The app container.</param> protected virtual void ConfigureAgatha(IContainer appContainer) { var structureMapContainer = new Agatha.StructureMap.Container(appContainer); IoC.Container = structureMapContainer; var serviceLayerConfiguration = new ServiceLayerConfiguration(structureMapContainer); // register request and response assemblies var messageRegex = new Regex("^Asam.Ppc.Service.Messages$"); List <Assembly> messageAssebllies = AppDomain.CurrentDomain.GetAssembliesFromApplicationBaseDirectory() .Where(x => messageRegex.IsMatch(x.GetName().Name)) .ToList(); messageAssebllies.ForEach( x => { List <Type> types = x.GetTypes(). //Where( //type => !type.IsSubclassOf(typeof (Request)) && !type.IsSubclassOf(typeof (Response))). ToList(); //types.ForEach(KnownTypeProvider.Register); serviceLayerConfiguration.AddRequestAndResponseAssembly(x); }); // register request handler assemblies var serviceRegex = new Regex("^Asam.Ppc.Service.Handlers$"); List <Assembly> serviceAssemblies = AppDomain.CurrentDomain.GetAssembliesFromApplicationBaseDirectory() .Where(x => serviceRegex.IsMatch(x.GetName().Name)) .ToList(); serviceAssemblies.ForEach( x => serviceLayerConfiguration.AddRequestHandlerAssembly(x)); // register agatha conventions serviceLayerConfiguration.Use <RequestHandlerBasedConventions>(); serviceLayerConfiguration.RequestProcessorImplementation = typeof(NHibernateTransactionRequestProcessor); // register business exception type //serviceLayerConfiguration.BusinessExceptionType = typeof(BusinessRuleException); serviceLayerConfiguration.Initialize(); }