public virtual IUnityContainer RegisterComponents(HttpConfiguration httpConfig, IUnityContainer aContainer = null) { var container = aContainer ?? ContainerConfiguration.Create(); container.RegisterTypes( AllClasses.FromAssemblies(Assembly.GetExecutingAssembly(), Assembly.GetAssembly(typeof(ContainerConfiguration)), Assembly.GetAssembly(typeof(SourceSystemConfiguration)), Assembly.GetAssembly(typeof(SimpleMappingEngineConfiguration))) .Where(t => t.Implements <IGlobalConfigurationTask>()), WithMappings.FromAllInterfaces, ConfiguratorName); container.RegisterType <IWebOperationContextWrapper, WebOperationContextWrapper>(); container.RegisterType <IConfigurationManager, AppConfigConfigurationManager>(new ContainerControlledLifetimeManager()); RegisterMdmServiceAssemblyNameLocators(container); AdditionalRegistrations(container); // Now get them all, and initialize them, bootstrapper takes care of ordering // There appears to be a bug in Unity 3.5 where ResolveAll fails to do exactly that.. // var globalTasks = container.ResolveAll<IGlobalConfigurationTask>().ToList(); var globalTasks = new List <IGlobalConfigurationTask>(); var registrations = container.Registrations.Where(reg => reg.RegisteredType == typeof(IGlobalConfigurationTask)); registrations.ForEach(reg => globalTasks.Add(container.Resolve <IGlobalConfigurationTask>(reg.Name))); var tasks = globalTasks.Select(task => task as IConfigurationTask).ToList(); LogConfigurationTasks(tasks); ConfigurationBootStrapper.Initialize(tasks); httpConfig.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container); return(container); }
protected T Execute <T>() where T : IStartable { if (this.ExecuteConfigTasks) { ConfigurationBootStrapper.Initialize(this.Container.ResolveAll <IGlobalConfigurationTask>()); } var host = this.Container.Resolve <T>(); host.Start(); return(host); }
protected void Application_Start(object sender, EventArgs e) { // Self-register and set up service location var container = ContainerConfiguration.Create(); // Auto register all the global configuration tasks //container.ConfigureAutoRegistration() // .Include(x => x.Implements<IGlobalConfigurationTask>(), // Then.Register().As<IGlobalConfigurationTask>().WithTypeName()) // .ApplyAutoRegistration(new[] { GetType().Assembly, typeof(BrokerCommodityConfiguration).Assembly }); // Register all IGlobalConfigurationTasks from this and any other appropriate assemblies // NB This needs fixing so we don't have to name them - needs specific IDependencyResolver // see http://www.chrisvandesteeg.nl/2009/04/16/making-unity-work-more-like-the-others/ container.RegisterType <IGlobalConfigurationTask, SampleMappingContextConfiguration>("a"); container.RegisterType <IGlobalConfigurationTask, RouteConfiguration>("b"); container.RegisterType <IGlobalConfigurationTask, ServiceConfiguration>("c"); container.RegisterType <IGlobalConfigurationTask, SimpleMappingEngineConfiguration>("d"); container.RegisterType <IGlobalConfigurationTask, RepositoryConfiguration>("e"); // container.RegisterType<IGlobalConfigurationTask, ProfilingConfiguration>("e"); container.RegisterType <IGlobalConfigurationTask, LoggerConfiguration>("f"); // Per-entity configurations container.RegisterType <IGlobalConfigurationTask, BrokerConfiguration>("broker"); container.RegisterType <IGlobalConfigurationTask, CounterpartyConfiguration>("counterparty"); container.RegisterType <IGlobalConfigurationTask, ExchangeConfiguration>("exchange"); container.RegisterType <IGlobalConfigurationTask, LocationConfiguration>("location"); container.RegisterType <IGlobalConfigurationTask, PartyConfiguration>("party"); container.RegisterType <IGlobalConfigurationTask, PartyRoleConfiguration>("partyrole"); container.RegisterType <IGlobalConfigurationTask, PersonConfiguration>("person"); container.RegisterType <IGlobalConfigurationTask, SourceSystemConfiguration>("sourcesystem"); container.RegisterType <IGlobalConfigurationTask, LegalEntityConfiguration>("legalentity"); // Some dependencies for the tasks container.RegisterInstance(RouteTable.Routes); // Now get them all, and initialize them, bootstrapper takes care of ordering var globalTasks = container.ResolveAll <IGlobalConfigurationTask>(); var tasks = globalTasks.Select(task => task as IConfigurationTask).ToList(); ConfigurationBootStrapper.Initialize(tasks); ServiceLocator = container.Resolve <IServiceLocator>(); }
public static UnityContainer Configure() { // Self-register and set up service location var container = ContainerConfiguration.Create(); // Register all IGlobalConfigurationTasks from this and any other appropriate assemblies // NB This needs fixing so we don't have to name them - needs specific IDependencyResolver // see http://www.chrisvandesteeg.nl/2009/04/16/making-unity-work-more-like-the-others/ container.RegisterType <IGlobalConfigurationTask, ServiceConfiguration>("c"); container.RegisterType <IGlobalConfigurationTask, MdmServiceConfiguration>("d"); // Now get them all, and initialize them, bootstrapper takes care of ordering var globalTasks = container.ResolveAll <IGlobalConfigurationTask>(); var tasks = globalTasks.Select(task => task as IConfigurationTask).ToList(); ConfigurationBootStrapper.Initialize(tasks); return(container); }