反射:将PropertyInfo转换为List <obj> </obj>

时间:2011-06-14 17:16:08

标签: c# reflection

正如标题所示,那么我正在尝试将PropertyInfo投射到其“原始”类型,在我的情况下为List<obj>

我没试过下面的代码:

(List<obj>)pInfo.GetValue(pInfo, null)

(List<obj>)pInfo.GetValue(typeof<obj>, null)

它只是让我异常:

  

TargetException未处理:对象   与目标类型不匹配。

我确信我忽略了一些非常简单的事情,但我无法弄清楚是什么。

3 个答案:

答案 0 :(得分:9)

第一个参数是目标对象:

var list = (List<object>)prop.GetValue(obj,null);

但就个人而言,我可能想在这里使用非通用API;泛型和反思很少混合得很好:

var list = (IList)prop.GetValue(obj,null);

答案 1 :(得分:3)

此:

(List<obj>)pInfo.GetValue(pInfo, null)

是错误的,GetValue的第一个参数应该是你正在读取属性的对象,而不是PropertyInfo本身。

答案 2 :(得分:0)

您需要传入要获取值的对象而不是类型。这样的事情。

List<obj> object ...

(List<obj>) pInfo.GetValue( object, null );