Пример #1
0
        public void Install(IWindsorContainer container, IConfigurationStore store)
        {
            var fallback = new Fallback <IResourceProvider>(container, e => { }, 15);

            fallback.Register(c => c.Resolve <MemoryResourceProvider>());
            fallback.Register(c => c.Resolve <DbResourceProvider>());
            fallback.Configure("SaveResource", new FallbackMethodOptions {
                EvaluateAll = true
            });

            container.Register(
                Component.For <ProxyGenerator>());

            var fallbackCulture = new CultureInfo("en");

            container.Register(
                Component.For <DbResourceProvider>()
                .DependsOn(new
            {
                dbContext = container.Resolve <DoglogbookDbContext>(),
                fallbackCulture
            })
                .LifeStyle.HybridPerWebRequestTransient());

            container.Register(
                Component.For <MemoryResourceProvider>()
                .DependsOn(new
            {
                backendProvider = container.Resolve <DbResourceProvider>(),
                fallbackCulture
            })
                .LifeStyle.HybridPerWebRequestTransient());

            container.Register(
                Component.For <IResourceProvider>()
                .Instance(fallback.Object)
                .LifestyleSingleton());

            container.Register(
                Component.For <IInternationalizationResourceContextFactory>()
                .ImplementedBy(typeof(InternationalizationResourceContextFactory))
                .LifeStyle.HybridPerWebRequestTransient());

            container.Register(
                Component.For <IInternationalizationResourceContext>()
                .UsingFactoryMethod(
                    kernel =>
                    kernel.Resolve <IInternationalizationResourceContextFactory>().Create("DogLogBook", true))
                .LifeStyle.HybridPerWebRequestTransient());
        }