This question already has an answer here:
I have a class which looks like as follows:
public class MyConstants
{
public const int ONE = 1;
public const int TWO = 2;
Type thisObject;
public MyConstants()
{
thisObject = this.GetType();
}
public void EnumerateConstants()
{
PropertyInfo[] thisObjectProperties = thisObject.GetProperties(BindingFlags.Public);
foreach (PropertyInfo info in thisObjectProperties)
{
//need code to find out of the property is a constant
}
}
}
Bascially it is trying to reflect itself. I know how to reflect fields ONE, & TWO. But how do I know if it is a constant or not?
That's because they're fields, not properties. Try:
Edit: DataDink's right, it's smoother to use IsLiteral
FieldInfo objects actually have a ton of "IsSomething" booleans right on them:
Which saves you a tiny ammount of code over checking the attributes anyways.