正如标题所说,我试图将PropertyInfo
强制转换为其"原始"类型,在我的情况下就是List<obj>
。
我尝试了下面的代码,但没有运气:
(List<obj>)pInfo.GetValue(pInfo, null)
(List<obj>)pInfo.GetValue(typeof<obj>, null)
它只是给了我一个例外:
未处理TargetException:对象与目标类型不匹配。
我确信我忽略了一些非常简单的东西,但我不知道是什么。
第一个参数是目标对象:
var list = (List<object>)prop.GetValue(obj,null);
不过,就我个人而言,我可能很想在这里使用非通用的API;泛型和反射很少能很好地结合:
var list = (IList)prop.GetValue(obj,null);
这:
(List<obj>)pInfo.GetValue(pInfo, null)
错误,GetValue的第一个参数应该是正在读取其属性的对象,而不是PropertyInfo本身。
您需要传入要获取值的对象,而不是类型。像这样的东西。
List<obj> object ...
(List<obj>) pInfo.GetValue( object, null );