迭代对象列表并使用字符串获取元素属性

Swa*_*wag 2 c# loops properties list object

我正在寻找解决这个问题的解决方案.

我有一个对象:

- Person (String ID, String FirstName, String LastName)
Run Code Online (Sandbox Code Playgroud)

我有一对夫妇的名单 Persons

- List<Person> persons;
Run Code Online (Sandbox Code Playgroud)

我的目标是:

1. Iterate through List
2. Get property value from that element with a string named to that property
Run Code Online (Sandbox Code Playgroud)

例如:

我想知道列表中人员的ID:

我可以做这个:

foreach(Person p in persons)
{
    String personId = p.ID;
}
Run Code Online (Sandbox Code Playgroud)

但我想做这样的事情:

foreach(Person p in persons)
{
    String personId = p. + "ID";
}
Run Code Online (Sandbox Code Playgroud)

我想追加字符串"ID"来获取该元素的ID,而不是调用p.ID.

这可能吗?我需要一个解决方案,我花了很多时间,但在互联网上找不到任何解决方案.

khe*_*ang 5

您可以使用反射按名称获取属性的值:

foreach (Person p in persons)
{
    var personId = typeof(Person).GetProperty("ID").GetValue(p, null) as string;
}
Run Code Online (Sandbox Code Playgroud)

当然这需要一些错误处理和一些null检查,但你得到的要点:)