反射:将PropertyInfo强制转换为列表<obj>



正如标题所说,我试图将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 );

相关内容

  • 没有找到相关文章

最新更新