private PropertyDescriptorCollection GetPropertiesWithMetadata(PropertyDescriptorCollection originalCollection) { if (this.generatedMetadataType != null) { bool flag = false; List <PropertyDescriptor> list = new List <PropertyDescriptor>(); foreach (PropertyDescriptor descriptor in originalCollection) { Attribute[] generatedMetadata = TypeDescriptorCache.GetGeneratedMetadata(this.generatedMetadataType, descriptor.Name); PropertyDescriptor item = descriptor; if (generatedMetadata.Length > 0) { item = new GeneratedMetadataPropertyDescriptor(descriptor, generatedMetadata); flag = true; } list.Add(item); } if (flag) { return(new PropertyDescriptorCollection(list.ToArray(), true)); } } return(originalCollection); }