[Flags] |
The enumerated value is a number representing the bitwise OR of the attributes implemented on the method.
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
*/
| 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: