Click to Rate and Give Feedback
MSDN
MSDN Library
.NET Development
.NET Framework 3.5
 GetProperties Method (Object, Attri...
Collapse All/Expand All Collapse All
This page is specific to
Microsoft Visual Studio 2008/.NET Framework 3.5

Other versions are also available for the following:
.NET Framework Class Library
TypeDescriptor..::.GetProperties Method (Object, array<Attribute>[]()[])

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

Namespace:  System.ComponentModel
Assembly:  System (in System.dll)
Visual Basic (Declaration)
Public Shared Function GetProperties ( _
    component As Object, _
    attributes As Attribute() _
) As PropertyDescriptorCollection
Visual Basic (Usage)
Dim component As Object
Dim attributes As Attribute()
Dim returnValue As PropertyDescriptorCollection

returnValue = TypeDescriptor.GetProperties(component, _
    attributes)
C#
public static PropertyDescriptorCollection GetProperties(
    Object component,
    Attribute[] attributes
)
Visual C++
public:
static PropertyDescriptorCollection^ GetProperties(
    Object^ component, 
    array<Attribute^>^ attributes
)
JScript
public static function GetProperties(
    component : Object, 
    attributes : Attribute[]
) : PropertyDescriptorCollection

Parameters

component
Type: System..::.Object
A component to get the properties for.
attributes
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 the specified component.
ExceptionCondition
NotSupportedException

component is a cross-process remoted object.

The properties for the component parameter can differ from the properties of a class, because the site can add or remove properties if the component parameter is sited.

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 component is nullNothingnullptra null reference (Nothing in Visual Basic), 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.

Visual Basic
' Returns the properties of the specified component extended with 
' a CategoryAttribute reflecting the name of the type of the property.
Public Overloads Overrides Function GetProperties(ByVal component As Object, ByVal attributes() As System.Attribute) As System.ComponentModel.PropertyDescriptorCollection
    Dim props As PropertyDescriptorCollection
    If attributes Is Nothing Then
        props = TypeDescriptor.GetProperties(component)
    Else
        props = TypeDescriptor.GetProperties(component, attributes)
    End If
    Dim propArray(props.Count - 1) As PropertyDescriptor
    Dim i As Integer
    For i = 0 To props.Count - 1
        ' Create a new PropertyDescriptor from the old one, with 
        ' a CategoryAttribute matching the name of the type.
        propArray(i) = TypeDescriptor.CreateProperty(props(i).ComponentType, props(i), New CategoryAttribute(props(i).PropertyType.Name))
    Next i
    Return New PropertyDescriptorCollection(propArray)
End Function

Public Overloads Overrides Function GetProperties(ByVal component As Object) As System.ComponentModel.PropertyDescriptorCollection
    Return Me.GetProperties(component, Nothing)
End Function
C#
// Returns the properties of the specified component extended with 
// a CategoryAttribute reflecting the name of the type of the property.
public override System.ComponentModel.PropertyDescriptorCollection GetProperties(object component, System.Attribute[] attributes)
{
    PropertyDescriptorCollection props;
    if( attributes == null )
        props = TypeDescriptor.GetProperties(component);    
    else
        props = TypeDescriptor.GetProperties(component, attributes);    

    PropertyDescriptor[] propArray = new 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.
        propArray[i] = TypeDescriptor.CreateProperty(props[i].ComponentType, props[i], new CategoryAttribute(props[i].PropertyType.Name));
    }
    return new PropertyDescriptorCollection( propArray );
}

public override System.ComponentModel.PropertyDescriptorCollection GetProperties(object component)
{                     
    return this.GetProperties(component, null);
}
Visual C++
// 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 );
   else
            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 );
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Processing
© 2009 Microsoft Corporation. All rights reserved. Terms of Use | Trademarks | Privacy Statement | Site Feedback
Page view tracker