TypeDescriptor::GetProperties Method (Type^, array<Attribute^>^)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Returns the collection of properties for a specified type of component using a specified array of attributes as a filter.

Namespace:   System.ComponentModel
Assembly:  System (in System.dll)

static PropertyDescriptorCollection^ GetProperties(
	Type^ componentType,
	array<Attribute^>^ attributes


Type: System::Type^

The Type of the target component.

Type: array<System::Attribute^>^

An array of type Attribute to use as a filter.

Return Value

Type: System.ComponentModel::PropertyDescriptorCollection^

A PropertyDescriptorCollection with the properties that match the specified attributes for this type of component.

Call this version of this method only when you do not have an instance of the object.

The attributes parameter array is used to filter the array. Filtering is defined by the following rules:

  • If a property does not have an Attribute of the same class, the property is not included in the returned array.

  • If the attribute is an instance of the Attribute class, the property must be an exact match or it is not included in the returned array.

  • If an Attribute instance is specified and it is the default property, it is included in the returned array even if there is no instance of the Attribute in the property.

  • If attributes has a default attribute, the GetProperties method matches the case when the property does not have the attribute applied.

If the componentType parameter is null, an empty collection is returned.

The order of the returned collection is not guaranteed to be identical between calls, so always order it before use.

The following code example demonstrates how to implement the GetProperties method. This code example is part of a larger example provided for the PropertyTab class.

// Returns the properties of the specified component extended with
// a CategoryAttribute reflecting the name of the type of the property.
[ReflectionPermission(SecurityAction::Demand, Flags=ReflectionPermissionFlag::MemberAccess)]
virtual System::ComponentModel::PropertyDescriptorCollection^ GetProperties( Object^ component, array<System::Attribute^>^attributes ) override
   PropertyDescriptorCollection^ props;
   if ( attributes == nullptr )
            props = TypeDescriptor::GetProperties( component );
            props = TypeDescriptor::GetProperties( component, attributes );

   array<PropertyDescriptor^>^propArray = gcnew array<PropertyDescriptor^>(props->Count);
   for ( int i = 0; i < props->Count; i++ )
      // Create a new PropertyDescriptor from the old one, with
      // a CategoryAttribute matching the name of the type.
      array<Attribute^>^temp0 = {gcnew CategoryAttribute( props[ i ]->PropertyType->Name )};
      propArray[ i ] = TypeDescriptor::CreateProperty( props[ i ]->ComponentType, props[ i ], temp0 );

   return gcnew PropertyDescriptorCollection( propArray );

virtual System::ComponentModel::PropertyDescriptorCollection^ GetProperties( Object^ component ) override
   return this->GetProperties( component, nullptr );

.NET Framework
Available since 1.1
Return to top