我有一个叫做学生的属性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)