C# - Get values of static properties from static class

c#, class, properties, reflection, static

Solution

The problem is that `property1..3` are not properties, but fields.

To make them properties change them to:

private static string _property1 = "NumberOne";
public static string property1
{
  get { return _property1; }
  set { _property1 = value; }
}

Or use auto properties and initialize their values in the static constructor of the class:

public static string property1 { get; set; }

static MyStaticClass()
{
  property1 = "NumberOne";
}

...or use `myType.GetFields(...)` if fields are what you want to use.

Problem

I'm trying to loop through some static properties in a simple static class in order to populate a combo box with their values, but am having difficulties. Here is the simple class: ``` public static MyStaticClass() { public static string property1 = "NumberOne"; public static string property2 = "NumberTwo"; public static string property3 = "NumberThree"; } ``` ... and the code attempting to retrieve the values: ``` Type myType = typeof(MyStaticClass); PropertyInfo[] properties = myType.GetProperties( BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly); foreach (PropertyInfo property in properties) { MyComboBox.Items.Add(property.GetValue(myType, null).ToString()); } ``` If I don't supply any binding flags then I get about 57 properties including things like System.Reflection.Module Module and all sorts of other inherited things I don't care about. My 3 declared properties are not present. If I supply various combinations of other flags then it always returns 0 properties. Great. Does it matter that my static class is actually declared within another non-static class? What am I doing wrong?

Original source