2014-01-10 56 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