ComponentModelDescriptorUtil
using Castle.Core;
using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace Castle.MicroKernel.ModelBuilder
{
    [EditorBrowsable(EditorBrowsableState.Never)]
    public static class ComponentModelDescriptorUtil
    {
        public static readonly string MetaDescriptorsKey = "Castle.meta-descriptors";
        public static ICollection<IMetaComponentModelDescriptor> GetMetaDescriptors(this ComponentModel model, bool ensureExists)
        {
            if (model == null)
                throw new ArgumentNullException("model");
            ICollection<IMetaComponentModelDescriptor> collection = model.ExtendedProperties[MetaDescriptorsKey] as ICollection<IMetaComponentModelDescriptor>;
            if ((collection == null) & ensureExists) {
                collection = new List<IMetaComponentModelDescriptor>();
                model.ExtendedProperties[MetaDescriptorsKey] = collection;
            }
            return collection;
        }
        public static void RemoveMetaDescriptors(ComponentModel model)
        {
            model.ExtendedProperties.Remove(MetaDescriptorsKey);
        }
    }
}