动态访问公共类成员
本文关键字:成员 访问 动态 | 更新日期: 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; }
}
}