我有以下虚拟类结构,我试图找出如何从 PeopleList 中 People 类的每个实例获取属性。我知道如何从 People 的单个实例中获取属性,但我无法弄清楚如何从 PeopleList 中获取它。我确信这真的很简单,但有人能指出我正确的方向吗?
public class Example
{
public class People
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
public People()
{
}
public People(string name, int age)
{
this._name = name;
this._age = age;
}
}
public class PeopleList : List<People>
{
public static void DoStuff()
{
PeopleList newList = new PeopleList();
// Do some stuff
newList.Add(new People("Tim", 35));
}
}
}
仍然不能 100% 确定你想要什么,但是这段快速的代码(未经测试)可能会让你走上正确的轨道(或者至少有助于澄清你想要什么)。
void ReportValue(String propName, Object propValue);
void ReadList<T>(List<T> list)
{
var props = typeof(T).GetProperties();
foreach(T item in list)
{
foreach(var prop in props)
{
ReportValue(prop.Name, prop.GetValue(item));
}
}
}
c# 应该能够计算出 'PeopleList' 继承自 'List' 并处理得很好,但是如果您需要将 'PeopleList' 作为泛型类型,那么这应该可以工作:
void ReadList<T>(T list) where T : System.Collections.IList
{
foreach (Object item in list)
{
var props = item.GetType().GetProperties();
foreach (var prop in props)
{
ReportValue(prop.Name, prop.GetValue(item, null));
}
}
}
请注意,这实际上也会处理列表中派生类型的属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)