ConfigurationDescriptor
using Castle.Core;
using Castle.Core.Configuration;
using Castle.MicroKernel.Registration;
using System.Collections.Generic;
namespace Castle.MicroKernel.ModelBuilder.Descriptors
{
    public class ConfigurationDescriptor : IComponentModelDescriptor
    {
        private readonly Node[] configNodes;
        private readonly IConfiguration configuration;
        public ConfigurationDescriptor(params Node[] configNodes)
        {
            this.configNodes = configNodes;
        }
        public ConfigurationDescriptor(IConfiguration configuration)
        {
            this.configuration = configuration;
        }
        public void BuildComponentModel(IKernel kernel, ComponentModel model)
        {
            if (configuration != null)
                ((List<IConfiguration>)model.Configuration.get_Children()).Add(configuration);
            else {
                Node[] array = configNodes;
                for (int i = 0; i < array.Length; i++) {
                    array[i].ApplyTo(model.Configuration);
                }
            }
        }
        public void ConfigureComponentModel(IKernel kernel, ComponentModel model)
        {
        }
    }
}