迭代静态类的属性来填充列表?

pdi*_*izz 19 c# iteration static

我有一类字符串常量,如何循环获取字符串并填充列表框?

static class Fields
{
    static readonly string FirstName = "FirstName";
    static readonly string LastName = "LastName";
    static readonly string Grade = "Grade";
    static readonly string StudentID1 = "StudentID";
    static readonly string StudentID2 = "SASINumber";
}

public partial class SchoolSelect : Form
{
    public SchoolSelect()
    {
        InitializeComponent();

        //SNIP

        // populate fields
        //Fields myFields = new Fields(); // <-- Cant do this
        i = 0;
        foreach (string field in Fields) // ???
        { 
            fieldsBox.Items.Insert(i, Fields ???
        }
    }
Run Code Online (Sandbox Code Playgroud)

我无法创建一个新的Fields实例,因为它是一个静态类.如何在不手动插入每个字段的情况下将所有字段放入列表框?

Cyb*_*axs 31

尝试反思与这样的事情:

(更新后的版本)

        Type type = typeof(Fields); // MyClass is static class with static properties
        foreach (var p in type.GetFields( System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic))
        {
            var v = p.GetValue(null); // static classes cannot be instanced, so use null...
            //do something with v
            Console.WriteLine(v.ToString());
        }
Run Code Online (Sandbox Code Playgroud)

  • 因为您正在寻找字段(在问题中)而不是属性,所以您应该使用type.GetFields(),甚至可以将BindingFlag作为参数添加到方法中,例如BindingFlags.Static(不确定确切名称) (4认同)