PartialConfigurationStore
using Castle.Core.Configuration;
using Castle.Core.Resource;
using Castle.MicroKernel;
using Castle.MicroKernel.SubSystems.Configuration;
using System;
namespace Castle.Windsor.Installer
{
    internal class PartialConfigurationStore : IConfigurationStore, ISubSystem, IDisposable
    {
        private readonly IConfigurationStore inner;
        private readonly IConfigurationStore partial;
        public PartialConfigurationStore(IKernelInternal kernel)
        {
            inner = kernel.ConfigurationStore;
            partial = new DefaultConfigurationStore();
            partial.Init(kernel);
        }
        public void AddChildContainerConfiguration(string name, IConfiguration config)
        {
            inner.AddChildContainerConfiguration(name, config);
            partial.AddChildContainerConfiguration(name, config);
        }
        public void AddComponentConfiguration(string key, IConfiguration config)
        {
            inner.AddComponentConfiguration(key, config);
            partial.AddComponentConfiguration(key, config);
        }
        public void AddFacilityConfiguration(string key, IConfiguration config)
        {
            inner.AddFacilityConfiguration(key, config);
            partial.AddFacilityConfiguration(key, config);
        }
        public void AddInstallerConfiguration(IConfiguration config)
        {
            inner.AddInstallerConfiguration(config);
            partial.AddInstallerConfiguration(config);
        }
        public IConfiguration GetChildContainerConfiguration(string key)
        {
            return partial.GetChildContainerConfiguration(key);
        }
        public IConfiguration GetComponentConfiguration(string key)
        {
            return partial.GetComponentConfiguration(key);
        }
        public IConfiguration[] GetComponents()
        {
            return partial.GetComponents();
        }
        public IConfiguration[] GetConfigurationForChildContainers()
        {
            return partial.GetConfigurationForChildContainers();
        }
        public IConfiguration[] GetFacilities()
        {
            return partial.GetFacilities();
        }
        public IConfiguration GetFacilityConfiguration(string key)
        {
            return partial.GetFacilityConfiguration(key);
        }
        public IConfiguration[] GetInstallers()
        {
            return partial.GetInstallers();
        }
        public IResource GetResource(string resourceUri, IResource resource)
        {
            return inner.GetResource(resourceUri, resource);
        }
        public void Dispose()
        {
            Terminate();
        }
        public void Init(IKernelInternal kernel)
        {
            partial.Init(kernel);
        }
        public void Terminate()
        {
            partial.Terminate();
        }
    }
}