在我的代码中,我在for循环中获取对象的类型(Party对象),并获取特定属性“firstname”的属性信息。 Parties []集合中的所有对象都返回相同的类型,因此我想在do while循环之外只获取一次类型,并且仍然需要能够从正确的party对象获取属性“firstname”。 有可能这样做吗?谢谢你的帮助。
public List<Party> Parties { get; set; }
PropertyInfo info = null;
i = 1
do
{
foreach (Field field in TotalFields)
{
info = Parties[i - 1].GetType().GetProperty("firstname");
//some other code here
}
i++;
} while (i <= Parties.Count);
答案 0 :(得分:1)
当您通过PropertyInfo
对象获取属性的值时,需要传递一个从中获取值的对象实例。这意味着您可以为多个对象重用相同的PropertyInfo
实例,因为它们与为PropertyInfo
创建的类型相同:
// Note how we get the PropertyInfo from the Type itself, not an object
// instance of that type.
PropertyInfo propInfo = typeof(YourType).GetProperty("SomeProperty");
foreach (YourType item in SomeList)
{
// this assumes that YourType.SomeProperty is a string, just as an example
string value = (string)propInfo.GetValue(item, null);
// do something sensible with value
}
您的问题被标记为C#3,但为了完整性,值得一提的是,使用dynamic
在C#4中可以使这更简单:
foreach (dynamic item in SomeList)
{
string value = item.SomeProperty;
// do something sensible with value
}