2014-01-10 23 views
6

要获得在Server 2003上运行的.NET控制台应用程序,我们必须将我们的一个核心库从.NET 4.5降级到4.0 。除此之外,这个库有一个执行一些反射的类,通过对象的属性循环来获取它们的值。使用Propertyinfo.GetValue()System.Reflection.PropertyInfo.GetValue() - 降级.NET版本 - 缺少方法签名

根据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[])来镜像此功能。谁能帮忙?

回答

7

该文档不明确,但在反编译器中检查实现显示property.GetValue(obj)只是调用property.GetValue(obj, null),没有任何检查,也没有捕获任何异常。因此,您将从property.GetValue(obj)获得的任何例外都是,正好是,您将从property.GetValue(obj, null)得到的例外,并且您应该在更新电话时没有问题。

+0

很好的答案,谢谢:) – user3181548