Пример #1
0
        public void Build(IContainerBuilder containerBuilder, IBuilderContext context)
        {
            containerBuilder.For <DefaultConfigurationResolver>()
            .KnownAs <IConfigurationResolver>().ScopedAs.Singleton();

            new LocalizationSetup().Build(containerBuilder, context);

            // Go into configuration and figure out the required providers for the caches
            var config = General.GetFromConfigManager();

            if (config == null)
            {
                string warning = "Could not find the Rebel Framework configuration. Ensure that a configSection element is declared in the application's configuration, of type '{0}' using the xml element path of '{1}'. Using defaults for now."
                                 .InvariantFormat(typeof(General).FullName, General.ConfigXmlKey);
                LogHelper.Warn <FrameworkSetup>(warning);
                config = new General();
            }

            var  extended     = config.CacheProviders.ExtendedLifetime.IfNotNull(x => x.GetProviderType());
            Type extendedType = extended ?? typeof(RuntimeCacheProvider);
            var  limited      = config.CacheProviders.LimitedLifetime.IfNotNull(x => x.GetProviderType());;
            Type limitedType  = limited ?? typeof(PerHttpRequestCacheProvider);

            DemandsDependenciesDemandRunniner.Run(containerBuilder, extendedType);
            DemandsDependenciesDemandRunniner.Run(containerBuilder, limitedType);

            containerBuilder.For(extendedType).Named <AbstractCacheProvider>("extended").ScopedAs.Singleton();
            containerBuilder.For(limitedType).Named <AbstractCacheProvider>("limited").ScopedAs.Singleton();

            containerBuilder
            .ForFactory(x => new DefaultFrameworkCaches(x.Resolve <AbstractCacheProvider>("limited"), x.Resolve <AbstractCacheProvider>("extended")))
            //.ForFactory(x => new DefaultFrameworkCaches(null, null))
            .KnownAs <IFrameworkCaches>()
            .ScopedAs
            .Singleton();

            containerBuilder.For <ServiceStackSerialiser>().KnownAs <ISerializer>().ScopedAs.Singleton();
            containerBuilder.For <SerializationService>().KnownAs <AbstractSerializationService>().ScopedAs.Singleton();

            containerBuilder.For <DefaultFrameworkContext>().KnownAs <IFrameworkContext>().ScopedAs.Singleton();

            containerBuilder
            .For <MappingEngineCollection>()
            .KnownAsSelf()
            .OnActivated((ctx, x) => x.Configure())     //once it's created, then we call Configure
            .ScopedAs.Singleton();
        }
Пример #2
0
 /// <summary>
 /// For each plugin found, this method is called for it's type to check if the plugin has an DemandsDependenciesAttribute
 /// and if so, builds its dependencies.
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="t"></param>
 protected virtual void BuildComponentDependencies(IContainerBuilder builder, Type t)
 {
     DemandsDependenciesDemandRunniner.Run(builder, t);
 }