0 out of 2 rated this helpful - Rate this topic

PropertyInfo Class

Discovers the attributes of a property and provides access to property metadata.

Namespace:  System.Reflection
Assembly:  mscorlib (in mscorlib.dll)
[SerializableAttribute]
[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType.None)]
[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
public abstract class PropertyInfo : MemberInfo, 
	_PropertyInfo

The PropertyInfo type exposes the following members.

  Name Description
Protected method Supported by the XNA Framework PropertyInfo Initializes a new instance of the PropertyInfo class.
Top
  Name Description
Public property Supported by the XNA Framework Attributes Gets the attributes for this property.
Public property Supported by the XNA Framework Supported by Portable Class Library CanRead Gets a value indicating whether the property can be read.
Public property Supported by the XNA Framework Supported by Portable Class Library CanWrite Gets a value indicating whether the property can be written to.
Public property Supported by the XNA Framework Supported by Portable Class Library DeclaringType Gets the class that declares this member. (Inherited from MemberInfo.)
Public property Supported by the XNA Framework Supported by Portable Class Library IsSpecialName Gets a value indicating whether the property is the special name.
Public property Supported by the XNA Framework Supported by Portable Class Library MemberType Gets a MemberTypes value indicating that this member is a property. (Overrides MemberInfo.MemberType.)
Public property MetadataToken Gets a value that identifies a metadata element. (Inherited from MemberInfo.)
Public property Supported by Portable Class Library Module Gets the module in which the type that declares the member represented by the current MemberInfo is defined. (Inherited from MemberInfo.)
Public property Supported by the XNA Framework Supported by Portable Class Library Name Gets the name of the current member. (Inherited from MemberInfo.)
Public property Supported by the XNA Framework Supported by Portable Class Library PropertyType Gets the type of this property.
Public property Supported by the XNA Framework Supported by Portable Class Library ReflectedType Gets the class object that was used to obtain this instance of MemberInfo. (Inherited from MemberInfo.)
Top
  Name Description
Public method Supported by the XNA Framework Supported by Portable Class Library Equals Returns a value that indicates whether this instance is equal to a specified object. (Overrides MemberInfo.Equals(Object).)

In XNA Framework 3.0, this member is inherited from Object.Equals(Object).


In Portable Class Library Portable Class Library, this member is inherited from Object.Equals(Object).
Protected method Supported by the XNA Framework Supported by Portable Class Library Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method Supported by the XNA Framework Supported by Portable Class Library GetAccessors() Returns an array whose elements reflect the public get, set, and other accessors of the property reflected by the current instance.
Public method Supported by the XNA Framework Supported by Portable Class Library GetAccessors(Boolean) Returns an array whose elements reflect the public and, if specified, non-public get, set, and other accessors of the property reflected by the current instance.
Public method GetConstantValue Returns a literal value associated with the property by a compiler.
Public method Supported by the XNA Framework Supported by Portable Class Library GetCustomAttributes(Boolean) When overridden in a derived class, returns an array of all custom attributes applied to this member. (Inherited from MemberInfo.)
Public method Supported by the XNA Framework Supported by Portable Class Library GetCustomAttributes(Type, Boolean) When overridden in a derived class, returns an array of custom attributes applied to this member and identified by Type. (Inherited from MemberInfo.)
Public method GetCustomAttributesData Returns a list of CustomAttributeData objects representing data about the attributes that have been applied to the target member. (Inherited from MemberInfo.)
Public method Supported by the XNA Framework Supported by Portable Class Library GetGetMethod() Returns the public get accessor for this property.
Public method Supported by the XNA Framework Supported by Portable Class Library GetGetMethod(Boolean) When overridden in a derived class, returns the public or non-public get accessor for this property.
Public method Supported by the XNA Framework Supported by Portable Class Library GetHashCode Returns the hash code for this instance. (Overrides MemberInfo.GetHashCode().)

In XNA Framework 3.0, this member is inherited from Object.GetHashCode().


In Portable Class Library Portable Class Library, this member is inherited from Object.GetHashCode().
Public method Supported by the XNA Framework Supported by Portable Class Library GetIndexParameters When overridden in a derived class, returns an array of all the index parameters for the property.
Public method GetOptionalCustomModifiers Returns an array of types representing the optional custom modifiers of the property.
Public method GetRawConstantValue Returns a literal value associated with the property by a compiler.
Public method GetRequiredCustomModifiers Returns an array of types representing the required custom modifiers of the property.
Public method Supported by the XNA Framework Supported by Portable Class Library GetSetMethod() Returns the public set accessor for this property.
Public method Supported by the XNA Framework Supported by Portable Class Library GetSetMethod(Boolean) When overridden in a derived class, returns the set accessor for this property.
Public method Supported by the XNA Framework Supported by Portable Class Library GetType Gets the Type of the current instance. (Inherited from Object.)
Public method Supported by the XNA Framework Supported by Portable Class Library GetValue(Object, Object[]) Returns the value of the property with optional index values for indexed properties.
Public method Supported by the XNA Framework GetValue(Object, BindingFlags, Binder, Object[], CultureInfo) When overridden in a derived class, returns the value of a property having the specified binding, index, and CultureInfo.
Public method Supported by the XNA Framework Supported by Portable Class Library IsDefined When overridden in a derived class, indicates whether one or more attributes of the specified type or of its derived types is applied to this member. (Inherited from MemberInfo.)
Protected method Supported by the XNA Framework Supported by Portable Class Library MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Public method Supported by the XNA Framework Supported by Portable Class Library SetValue(Object, Object, Object[]) Sets the value of the property with optional index values for index properties.
Public method Supported by the XNA Framework SetValue(Object, Object, BindingFlags, Binder, Object[], CultureInfo) When overridden in a derived class, sets the property value for the given object to the given value.
Public method Supported by the XNA Framework Supported by Portable Class Library ToString Returns a string that represents the current object. (Inherited from Object.)
Top
  Name Description
Public operator Static member Equality Indicates whether two PropertyInfo objects are equal.
Public operator Static member Inequality Indicates whether two PropertyInfo objects are not equal.
Top
  Name Description
Explicit interface implemetation Private method _MemberInfo.GetIDsOfNames Maps a set of names to a corresponding set of dispatch identifiers. (Inherited from MemberInfo.)
Explicit interface implemetation Private method _MemberInfo.GetType Gets a Type object representing the MemberInfo class. (Inherited from MemberInfo.)
Explicit interface implemetation Private method _MemberInfo.GetTypeInfo Retrieves the type information for an object, which can then be used to get the type information for an interface. (Inherited from MemberInfo.)
Explicit interface implemetation Private method _MemberInfo.GetTypeInfoCount Retrieves the number of type information interfaces that an object provides (either 0 or 1). (Inherited from MemberInfo.)
Explicit interface implemetation Private method _MemberInfo.Invoke Provides access to properties and methods exposed by an object. (Inherited from MemberInfo.)
Explicit interface implemetation Private method _PropertyInfo.GetIDsOfNames Maps a set of names to a corresponding set of dispatch identifiers.
Explicit interface implemetation Private method _PropertyInfo.GetType Gets a Type object representing the PropertyInfo type.
Explicit interface implemetation Private method _PropertyInfo.GetTypeInfo Retrieves the type information for an object, which can then be used to get the type information for an interface.
Explicit interface implemetation Private method _PropertyInfo.GetTypeInfoCount Retrieves the number of type information interfaces that an object provides (either 0 or 1).
Explicit interface implemetation Private method _PropertyInfo.Invoke Provides access to properties and methods exposed by an object.
Top

Properties are logically the same as fields. A property is a named aspect of an object's state whose value is typically accessible through get and set accessors. Properties may be read-only, in which case a set routine is not supported.

Note Note

To determine whether a property is static, you must obtain the MethodInfo for the get or set accessor, by calling the GetGetMethod or the GetSetMethod method, and examine its IsStatic property.

Several methods in this class assume that the get accessor and set accessor methods of a property have certain formats. The signatures of the get and set methods must match the following convention:

  • The return type of the get method and the last argument of the set method must be identical. This is the type of the property.

  • The get and set methods must have the same number, type, and order of indices.

If this format is not followed, the behavior of the GetValue and SetValue methods is undefined.

Calling ICustomAttributeProvider.GetCustomAttributes on PropertyInfo when the inherit parameter of GetCustomAttributes is true does not walk the type hierarchy. Use System.Attribute to inherit custom attributes.

Notes to Inheritors

When you inherit from PropertyInfo, you must override the following members: GetValue, SetValue, GetAccessors, GetGetMethod, GetSetMethod, and GetIndexParameters.

This example shows how to use various reflection classes to analyze the metadata contained in an assembly.

Note Note

This example generates about 55,000 lines of data, which you can redirect to a text file at the command prompt, as follows: example.exe > propertyinfo.txt


using System;
using System.Reflection;

class Module1
{

    public static void Main()
    {
        // This variable holds the amount of indenting that 
        // should be used when displaying each line of information.
        Int32 indent = 0;
        // Display information about the EXE assembly.
        Assembly a = System.Reflection.Assembly.GetExecutingAssembly();
        Display(indent, "Assembly identity={0}", a.FullName);
        Display(indent+1, "Codebase={0}", a.CodeBase);

        // Display the set of assemblies our assemblies reference.

        Display(indent, "Referenced assemblies:");
        foreach (AssemblyName an in a.GetReferencedAssemblies() )
        {
             Display(indent + 1, "Name={0}, Version={1}, Culture={2}, PublicKey token={3}", an.Name, an.Version, an.CultureInfo.Name, (BitConverter.ToString (an.GetPublicKeyToken())));
        }
        Display(indent, "");

        // Display information about each assembly loading into this AppDomain.
        foreach (Assembly b in AppDomain.CurrentDomain.GetAssemblies())
        {
            Display(indent, "Assembly: {0}", b);

            // Display information about each module of this assembly.
            foreach ( Module m in b.GetModules(true) )
            {
                Display(indent+1, "Module: {0}", m.Name);
            }

            // Display information about each type exported from this assembly.

            indent += 1;
            foreach ( Type t in b.GetExportedTypes() )
            {
                Display(0, "");
                Display(indent, "Type: {0}", t);

                // For each type, show its members & their custom attributes.

                indent += 1;
                foreach (MemberInfo mi in t.GetMembers() )
                {
                    Display(indent, "Member: {0}", mi.Name);
                    DisplayAttributes(indent, mi);

                    // If the member is a method, display information about its parameters.

                    if (mi.MemberType==MemberTypes.Method)
                    {
                        foreach ( ParameterInfo pi in ((MethodInfo) mi).GetParameters() )
                        {
                            Display(indent+1, "Parameter: Type={0}, Name={1}", pi.ParameterType, pi.Name);
                        }
                    }

                    // If the member is a property, display information about the property's accessor methods.
                    if (mi.MemberType==MemberTypes.Property)
                    {
                        foreach ( MethodInfo am in ((PropertyInfo) mi).GetAccessors() )
                        {
                            Display(indent+1, "Accessor method: {0}", am);
                        }
                    }
                }
                indent -= 1;
            }
            indent -= 1;
        }
    }

    // Displays the custom attributes applied to the specified member.
    public static void DisplayAttributes(Int32 indent, MemberInfo mi)
    {
        // Get the set of custom attributes; if none exist, just return.
        object[] attrs = mi.GetCustomAttributes(false);
        if (attrs.Length==0) {return;}

        // Display the custom attributes applied to this member.
        Display(indent+1, "Attributes:");
        foreach ( object o in attrs )
        {
            Display(indent+2, "{0}", o.ToString());
        }
    }

    // Display a formatted string indented by the specified amount.
    public static void Display(Int32 indent, string format, params object[] param) 

    {
        Console.Write(new string(' ', indent*2));
        Console.WriteLine(format, param);
    }
}

//The output shown below is abbreviated.
//
//Assembly identity=ReflectionCS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
//  Codebase=file:///C:/Documents and Settings/test/My Documents/Visual Studio 2005/Projects/Reflection/Reflection/obj/Debug/Reflection.exe
//Referenced assemblies:
//  Name=mscorlib, Version=2.0.0.0, Culture=, PublicKey token=B7-7A-5C-56-19-34-E0-89
//
//Assembly: mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//  Module: mscorlib.dll
//
//  Type: System.Object
//    Member: GetType
//    Member: ToString
//    Member: Equals
//      Parameter: Type=System.Object, Name=obj
//    Member: Equals
//      Parameter: Type=System.Object, Name=objA
//      Parameter: Type=System.Object, Name=objB
//    Member: ReferenceEquals
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//      Parameter: Type=System.Object, Name=objA
//      Parameter: Type=System.Object, Name=objB
//    Member: GetHashCode
//    Member: .ctor
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//
//  Type: System.ICloneable
//    Member: Clone
//
//  Type: System.Collections.IEnumerable
//    Member: GetEnumerator
//      Attributes:
//        System.Runtime.InteropServices.DispIdAttribute
//
//  Type: System.Collections.ICollection
//    Member: CopyTo
//      Parameter: Type=System.Array, Name=array
//      Parameter: Type=System.Int32, Name=index
//    Member: get_Count
//    Member: get_SyncRoot
//    Member: get_IsSynchronized
//    Member: Count
//      Accessor method: Int32 get_Count()
//    Member: SyncRoot
//      Accessor method: System.Object get_SyncRoot()
//    Member: IsSynchronized
//      Accessor method: Boolean get_IsSynchronized()
//
//  Type: System.Collections.IList
//    Member: get_Item
//      Parameter: Type=System.Int32, Name=index
//    Member: set_Item
//      Parameter: Type=System.Int32, Name=index
//      Parameter: Type=System.Object, Name=value
//    Member: Add
//      Parameter: Type=System.Object, Name=value
//    Member: Contains
//      Parameter: Type=System.Object, Name=value
//    Member: Clear
//    Member: get_IsReadOnly
//    Member: get_IsFixedSize
//    Member: IndexOf
//      Parameter: Type=System.Object, Name=value
//    Member: Insert
//      Parameter: Type=System.Int32, Name=index
//      Parameter: Type=System.Object, Name=value
//    Member: Remove
//      Parameter: Type=System.Object, Name=value
//    Member: RemoveAt
//      Parameter: Type=System.Int32, Name=index
//    Member: Item
//      Accessor method: System.Object get_Item(Int32)
//      Accessor method: Void set_Item(Int32, System.Object)
//    Member: IsReadOnly
//      Accessor method: Boolean get_IsReadOnly()
//    Member: IsFixedSize
//      Accessor method: Boolean get_IsFixedSize()
//
//  Type: System.Array
//    Member: IndexOf
//      Parameter: Type=T[], Name=array
//      Parameter: Type=T, Name=value
//    Member: AsReadOnly
//      Parameter: Type=T[], Name=array
//    Member: Resize
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//      Parameter: Type=T[]&, Name=array
//      Parameter: Type=System.Int32, Name=newSize
//    Member: BinarySearch
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//      Parameter: Type=T[], Name=array
//      Parameter: Type=T, Name=value
//    Member: BinarySearch
//      Attributes:
//        System.Runtime.ConstrainedExecution.ReliabilityContractAttribute
//      Parameter: Type=T[], Name=array
//      Parameter: Type=T, Name=value
//      Parameter: Type=System.Collections.Generic.IComparer`1[T], Name=comparer


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

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

This type is thread safe.

Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ