public ServiceLocator() { IContainer container = new Container(); container.Register <ISecurityConfiguration>(ctx => SecurityConfiguration.Current); container.Register <ISecurityHandler>(ctx => new SecurityHandler(), Lifecycle.Singleton); container.Register <ISecurityContext>(ctx => SecurityContext.CreateFrom(ctx.Resolve <ISecurityConfiguration>())); container.Register <IPolicyViolationHandler>(ctx => new DelegatePolicyViolationHandler(ctx.ResolveAll <IPolicyViolationHandler>()), Lifecycle.Singleton); container.Register <IPolicyViolationHandlerSelector>(ctx => new PolicyViolationHandlerSelector( ctx.Resolve <ISecurityConfiguration>().Advanced.Conventions.OfType <IPolicyViolationHandlerConvention>() )); container.Register <IWhatDoIHaveBuilder>(ctx => new DefaultWhatDoIHaveBuilder(), Lifecycle.Singleton); container.Register <IRequestDescription>(ctx => new HttpContextRequestDescription()); container.SetPrimarySource(ctx => ctx.Resolve <ISecurityConfiguration>().ExternalServiceLocator); Container = container; }