System.ComponentModel.DebugTypeDescriptor.ComponentEntry.GetExtendedProperties C# (CSharp) Method

GetExtendedProperties() private method

private GetExtendedProperties ( IComponent comp, IExtenderProvider providers ) : ICollection
comp IComponent
providers IExtenderProvider
return ICollection
            private ICollection GetExtendedProperties(IComponent comp, IExtenderProvider[] providers) {
                Type componentType = comp.GetType();
                
                Debug.WriteLineIf(CompDescrSwitch.TraceVerbose, "\tFound " + providers.Length.ToString(CultureInfo.InvariantCulture) + " providers");
                IList list = new ArrayList();

                for (int i = 0; i < providers.Length; i++) {

                    if (!providers[i].CanExtend(comp)) {
                        continue;
                    }

                    IExtenderProvider provider = providers[i];
                    Type providerType = provider.GetType();
                    ComponentEntry providerCompInfo = DebugTypeDescriptor.GetEntry(comp, providerType);

                    IList providerWrappedExtenders = providerCompInfo.GetWrappedExtenders(provider);
                    Debug.WriteLineIf(CompDescrSwitch.TraceVerbose, "\twrapped extenders: " + providerWrappedExtenders.Count.ToString(CultureInfo.InvariantCulture));

                    for (int j = 0; j < providerWrappedExtenders.Count; j++) {
                        PropertyDescriptor currentWrappedExtender = (PropertyDescriptor)providerWrappedExtenders[j];
                        Type receiverType = null;

                        ExtenderProvidedPropertyAttribute eppa = (ExtenderProvidedPropertyAttribute)currentWrappedExtender.Attributes[typeof(ExtenderProvidedPropertyAttribute)];
                        if (eppa.ReceiverType != null) {
                            receiverType = eppa.ReceiverType;
                        }

                        if (receiverType != null && receiverType.IsAssignableFrom(componentType)) {
                            list.Add(currentWrappedExtender);
                        }
                    }
                }
                return list;
            }