动态访问公共类成员

本文关键字:成员 访问 动态 | 更新日期: 2023-09-27 18:32:34

public class Names
{
    private string _name1 = "";
    private string _name2 = "";
    private string _name3 = "";
    public string Name1
    {
      get { return _name1; }
      set { _name1 = value; }
    }
    public string Name2
    {
      get { return _name2; }
      set { _name2 = value; }
    }
    public string Name3
    {
      get { return _name3; }
      set { _name3 = value; }
    }
}
collection Names = new Names();

我有一长串文本(longString)。 如果位置 10 处的文本为 2,那么我需要为其中两个名称设置值:Name1 和 Name2。 我的变量在我已经实例化的类中。 所以我需要动态设置动态数量的变量的值。 如何调用变量并动态设置值? 基本上是这样的:

for (int i = 1; i <= collection.Count(); i++)
{
    col.Name + i = longString.Substring(11, 4);
}

动态访问公共类成员

试试这个:

public class Names
{
    public string Name1 { get; set; }
    public string Name2 { get; set; }
    public string Name3 { get; set; }
}
for (int i = 1; i <= collection.Count(); i++)
{
    var col = collection.ElementAt(i);
    col.GetType().GetProperty("Name + i").SetValue(col, longString.Substring(11, 4), null);
}
名称

1、名称 2 和名称 3 是自动实现的属性。我们使用反射按名称获取属性并设置其值。

比使用反射更快:

public class Names
{
    private string[] _names = {"", "", ""};
    public string[] Names { get {return _names; } } // ReadOnlyCollection?
    public string Name1
    {
       get { return _names[0]; }
       set { _names[0] = value; }
    }
}