【发布时间】:2011-03-16 11:36:59
【问题描述】:
我有一个看似简单的问题,但我似乎找不到答案。我有一个带有属性的类。这些属性之一返回一个列表。我有一个方法可以循环遍历任何类的所有属性并为该类(通信日志应用程序)生成一个 TreeNode。当我遇到标识为 List 的属性时,我不知道如何正确转换 property.GetValue。 property.PropertyType 是已知的,但无论我尝试什么,都会出现编译错误或运行时错误。
这就是我想要做的......
foreach (PropertyInfo prop in props)
{
if(prop.PropertyType.Namespace == "System.Collections.Generic")
{
List<object> oList = prop.GetValue(data, null);
MessageBox.Show(oList.Count.ToString())
}
}
如果我在 GetValue 行设置断点,prop 参数就知道它是一个包含三个元素的“myclass”项目列表。我只是不能将它转换为对象列表(这很好)或将其转换为实际的“myclass”元素列表,这会更好。如何将 PropertyInfo.GetValue(一个对象)的返回值转换为它的 List?
【问题讨论】:
-
如果你做 var oList = prop.GetValue() 它返回正确的类型吗?
标签: reflection c#-3.0