Наследование: System.ComponentModel.TypeDescriptionProvider
Пример #1
0
        public static void Add(Type type)
        {
            lock (descriptors)
            {
                if (!providers.ContainsKey(type))
                {
                    // determine if the base type was already added
                    // if so, remove it before adding sub-type
                    // (if a sub-type is added after its base type, infinite recursion occurs in GetTypeDescriptor())
                    var baseFound = false;
                    if (type.BaseType != null && providers.ContainsKey(type.BaseType))
                    {
                        baseFound = true;
                        Remove(type.BaseType);
                    }

                    // add the provider for the type
                    var provider = new HyperTypeDescriptionProvider(TypeDescriptor.GetProvider(type));

                    TypeDescriptor.AddProvider(provider, type);
                    providers.Add(type, provider);

                    // initialize descriptor
                    provider.GetTypeDescriptor(type);

                    // if base type was removed, we can now add it back after building the sub-type descriptor
                    if (baseFound)
                    {
                        Add(type.BaseType);
                    }
                }
            }
        }
 public static void Add(Type type)
 {
     lock (_addedProviders)
     {
         if (!_addedProviders.ContainsKey(type))
         {
             TypeDescriptionProvider      parent   = TypeDescriptor.GetProvider(type);
             HyperTypeDescriptionProvider provider = new HyperTypeDescriptionProvider(parent);
             TypeDescriptor.AddProvider(provider, type);
             _addedProviders[type] = provider;
         }
     }
 }