我有一个叫做学生的属性List<Student>.
在反思中,我可以获得学生财产的价值.
现在的问题是如何迭代学生列表.
我需要检查StudentID [某个值]是否在该集合中.
var collection = studentPro.GetValue(studentObj,null);
//I need to iterate like this,
foreach(var item in collection)
{
if(item.StudentID == 33)
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
请帮我.
Ali*_*tad 15
你只需要施放它:
var collection = (List<Student>) studentPro.GetValue(studentObj,null);
Run Code Online (Sandbox Code Playgroud)
返回给您并存储的值var是类型object.因此List<Student>,在尝试循环之前,您需要先将其强制转换.
这就是为什么我个人不喜欢var,它隐藏了类型 - 除非在VS中你将它悬停在它上面.如果它是一个声明的类型object,很明显我们不能迭代它.
是,很好.但是应该用反射进行铸造.在反思中,我们不知道List的类型.我们不知道studentObj的实际类型
为此,您可以投射到IEnumerable:
var collection = (IEnumerable) studentPro.GetValue(studentObj,null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14637 次 |
| 最近记录: |