<Object> 如果列表名称是字符串"myList",是否可以获取对 MyList 的引用



我有一些类型为ObservableCollection<SampleObject>的列表
它们都以字母表中的一个字母结尾:lista, listb, listc…
现在我想做一个循环,通过字母表运行,在每个字母,它应该添加一个项目到当前列表。

的例子:

for (char i = 'a'; i < 'z'; i++)  
{  
    string name = "list" + i;
    name.Add(.....);
}

本例中的"name"应该是我要添加项的列表

您想要一个Dictionary<char, ObservableCollection<SampleObject>>,它将对每个char有不同的集合。

如果你的列表是在类级别声明的,那么反射可以用来获得对它们的引用(我仍然认为字典是更好的选择)。

简单的例子:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    private List<string> lista = new List<string>();
    private void button1_Click(object sender, EventArgs e)
    {
        Console.WriteLine("Before:");
        foreach (string value in lista)
        {
            Console.WriteLine(value);
        }
        for (char i = 'a'; i < 'z'; i++)  
        {  
            string name = "list" + i;
            System.Reflection.FieldInfo fi = this.GetType().GetField(name, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public);
            if (fi != null && fi.FieldType.Equals(typeof(List<string>)))
            {
                List<string> referenceToList = (List<string>)fi.GetValue(this);
                referenceToList.Add("Hello!");
            }
        }
        Console.WriteLine("After:");
        foreach (string value in lista)
        {
            Console.WriteLine(value);
        }
    }
}

最新更新