コード例 #1
0
        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;
        }