Вам просто нужно разыграть это:
var collection = (List<Student>) studentPro.GetValue(studentObj,null);
Значение, возвращенное вам и сохраненное в var
, относится к типу object
. Поэтому вам нужно сначала привести его к List<Student>
, прежде чем пытаться пройти по нему.
RANT
Вот почему я лично не люблю var
, он скрывает тип - если только в VS вы не наведите курсор на него. Если он был объявлен с типом object
, сразу было очевидно, что мы не можем выполнить его итерацию.
UPDATE
Да, это хорошо. Но кастинг должен быть
сделано с отражением. В отражении мы
не знаю тип списка. Мы не
знать реальный тип студента Obj
Для этого вы можете привести к IEnumerable
:
var collection = (IEnumerable) studentPro.GetValue(studentObj,null);