System.Reflection.PropertyInfo.GetValue() - 降级.NET版本 - 缺少方法签名

时间:2014-01-10 11:37:55

标签: c# .net reflection

要在Server 2003上运行.NET控制台应用程序,我们必须将其中一个核心库从.NET 4.5降级到4.0。除此之外,这个库有一个类,它执行一些反射,在对象的属性中循环以使用Propertyinfo.GetValue()获取它们的值

根据the MSDN documentationPropertyInfo.GetValue (Object)仅适用于.NET 4.5。在.NET 4.0中,this method存在,但形式为PropertyInfo.GetValue (Object, Object[])(额外的参数是知道如何处理索引属性)。

如果我们要降级此代码,我们需要知道PropertyInfo.GetValue Method (Object)遇到索引属性时会发生什么,因此我们可以使用PropertyInfo.GetValue Method (Object, Object[])镜像此功能。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:7)

文档对此并不清楚,但在反编译器中检查实现表明property.GetValue(obj)只调用property.GetValue(obj, null)而不进行任何检查,并且没有任何例外。因此,您从property.GetValue(obj)获得的任何异常都完全您将从property.GetValue(obj, null)获得的异常,并且您在更新通话时应该没有任何问题。