System.Reflection.PropertyAttributes Enumeration

Assembly: Mscorlib.dll
Namespace: System.Reflection
Summary
Defines the attributes that may be associated with a property. These attribute values are defined in corhdr.h.
C# Syntax:
[Flags]
[Serializable]
public enum PropertyAttributes
Remarks
To get the PropertyAttributes, first get the class Type. From the Type, get the PropertyInfo. From the PropertyInfo, get the Attributes.

The enumerated value is a number representing the bitwise OR of the attributes implemented on the method.

Example
In the example shown below, three properties are built and the PropertyAttributes enumerated value is displayed. Note that the for the read only property has no setter and thus cannot be changed by .Caption = statement.
 using System;
 using System.Reflection;
 
 //Make three properties, one read-write, one default
 // and one read only. 
 public class Aproperty  
 // A read-write property
 {
    private string caption = "A Default caption";
    public string Caption{
       get{return caption;}
       set{
          if (caption != value){caption = value;}
       }
    }
 }
 public class Bproperty  
 // A default property
 {
    private string caption  = "B Default caption";
    public string this [int index]{
       get {return "1";}
    }
    public string Caption{
  
       get{return caption;}
       set{
          if (caption != value){caption = value;}
       }
    }
 }
 public class Cproperty  
 // A read only property
 {
    private string caption = "C Default caption";
    public string Caption{
       get{return caption;}
       //No set- this is read only
    }
 }
  
 class propertyattributesenum
 {
    public static int Main(string[] args)
    {
       Console.WriteLine("\nReflection.PropertyAttributes");
  
       //Prove that a property exist and change its value
       Aproperty Mypropertya = new Aproperty();
       Bproperty Mypropertyb = new Bproperty();
       Cproperty Mypropertyc = new Cproperty();
  
      
       Console.Write("\n1. Mypropertya.Caption = " + Mypropertya.Caption );
      
       Console.Write("\n1. Mypropertyb.Caption = " + Mypropertyb.Caption );
      
       Console.Write("\n1. Mypropertyc.Caption = " + Mypropertyc.Caption );
  
       //Can change only Mypropertya as Mypropertyb is read only
       Mypropertya.Caption = "A- This is changed.";
       Mypropertyb.Caption = "B- This is changed.";
       //Note that Mypropertyc is not changed- it is read only
  
       Console.Write("\n\n2. Mypropertya.Caption = " + Mypropertya.Caption );
  
       Console.Write("\n2.Mypropertyb.Caption = " + Mypropertyb.Caption );
 
       Console.Write("\n2. Mypropertyc.Caption = " + Mypropertyc.Caption );
  
       //Get the PropertyAttributes Enumeration of the property.
       //Get the type
       Type MyTypea = Type.GetType("Aproperty");
       Type MyTypeb = Type.GetType("Bproperty");
       Type MyTypec = Type.GetType("Cproperty");
  
       //Get the property attributes
       PropertyInfo Mypropertyinfoa = MyTypea.GetProperty("Caption");
       PropertyAttributes Myattributesa = Mypropertyinfoa.Attributes;
       PropertyInfo Mypropertyinfob = MyTypeb.GetProperty("Item");
       PropertyAttributes Myattributesb = Mypropertyinfob.Attributes;
       PropertyInfo Mypropertyinfoc = MyTypec.GetProperty("Caption");
       PropertyAttributes Myattributesc = Mypropertyinfoc.Attributes;
  
       //Display the property attributes value
      
       Console.Write("\n\na- " + Myattributesa.ToString());
  
       Console.Write("\nb-" + Myattributesb.ToString());
      
       Console.Write("\nc- " + Myattributesc.ToString());
       return 0;
    }
 }
 /*
 Produces the following output
 
 Reflection.PropertyAttributes
  
 1. Mypropertya.Caption = A Default caption
 1. Mypropertyb.Caption = B Default caption
 1. Mypropertyc.Caption = C Default caption
  
 2. Mypropertya.Caption = A- This is changed.
 2. Mypropertyb.Caption = B- This is changed.
 2. Mypropertyc.Caption = C Default caption
  
 a- None
 b- DefaultProperty
 c- None
 */

    
See also:
System.Reflection Namespace

System.Reflection.PropertyAttributes Member List:

Public Fields
HasDefault Specifies that the property has a default value.
None Specifies that no attributes are associated with a property.
Reserved2 Reserved.
Reserved3 Reserved.
Reserved4 Reserved.
ReservedMask Specifies a flag reserved for runtime use only.
RTSpecialName Specifies that the metadata internal APIs check the name encoding.
SpecialName Specifies that the property is special, with the name describing how the property is special.

Hierarchy:


Top of page

Copyright (c) 2002 Microsoft Corporation. All rights reserved.