要在Server 2003上运行.NET控制台应用程序,我们必须将其中一个核心库从.NET 4.5降级到4.0。除此之外,这个库有一个类,它执行一些反射,在对象的属性中循环以使用Propertyinfo.GetValue()
获取它们的值
根据the MSDN documentation,PropertyInfo.GetValue (Object)
仅适用于.NET 4.5。在.NET 4.0中,this method存在,但形式为PropertyInfo.GetValue (Object, Object[])
(额外的参数是知道如何处理索引属性)。
如果我们要降级此代码,我们需要知道PropertyInfo.GetValue Method (Object)
遇到索引属性时会发生什么,因此我们可以使用PropertyInfo.GetValue Method (Object, Object[])
镜像此功能。有人可以帮忙吗?
答案 0 :(得分:7)
文档对此并不清楚,但在反编译器中检查实现表明property.GetValue(obj)
只调用property.GetValue(obj, null)
而不进行任何检查,并且没有任何例外。因此,您从property.GetValue(obj)
获得的任何异常都完全您将从property.GetValue(obj, null)
获得的异常,并且您在更新通话时应该没有任何问题。