DelegatingModelDescriptor
using Castle.Core;
using System;
namespace Castle.MicroKernel.ModelBuilder.Descriptors
{
    public class DelegatingModelDescriptor : IComponentModelDescriptor
    {
        private readonly Action<IKernel, ComponentModel> builder;
        private readonly Action<IKernel, ComponentModel> configurer;
        public DelegatingModelDescriptor(Action<IKernel, ComponentModel> builder = null, Action<IKernel, ComponentModel> configurer = null)
        {
            this.builder = builder;
            this.configurer = configurer;
        }
        public void BuildComponentModel(IKernel kernel, ComponentModel model)
        {
            if (builder != null)
                builder(kernel, model);
        }
        public void ConfigureComponentModel(IKernel kernel, ComponentModel model)
        {
            if (configurer != null)
                configurer(kernel, model);
        }
    }
}