我正在檢索控件的多個屬性。這裏是我用來檢索性能(與類型的PropertyInfo的PINFO):通過反射獲取屬性的值,該屬性的getter具有可選值
value = pinfo.GetValue(obj, nothing)
運行良好,但現在我面對的是具有可選值的屬性,我得到一個錯誤消息,告訴我,參數數量不正確。所以,我這個一個改變了我的代碼:
Dim index As Object() = {Nothing}
value = pinfo.GetValue(obj, index)
在這一點上,我沒有得到任何錯誤消息,但是這個代碼不檢索物有所值。它只有當我更換沒有由屬性訪問器提供的默認值...
的作品,但我事先不知道這個默認值是什麼!並且此代碼是內功能檢索不具有可選值的屬性,所以我不能更改代碼,特別是對於一種情況或另一種情況..
任何想法?我工作的.NET 2.0
編輯:更多關於精度導致問題
這裏的情況是財產導致問題的例子:
ReadOnly Property Foo(Optional ByVal Number As Integer = -1) As String
Get
If Number = -1 Then
Return "Your number is the default number: " & Number
Else
Return "Your number is " & Number
End If
End Get
End Property
隨着這種屬性,上面的代碼都沒有檢索到好的字符串。
我最好的猜測是嘗試一般用途的第一個代碼,趕上合適的異常,然後動態檢索參數(在這種情況下號)和其類型的默認值,讓我可以用此默認值調用getValue
。
那麼,我該如何檢索可選參數的默認值?
嗨,thx回答,但你的語法不適合我......編譯器不喜歡大括號(.NET 2.0)。另外,你的例子不適用於我,因爲我的函數必須檢索一個對象實例的所有屬性,並且它被調用許多不同的對象。 – GianT971 2012-02-23 17:35:18
你寫的最後一行與我的一次嘗試類似第二塊代碼在我的問題) – GianT971 2012-02-23 17:36:32
@ GianT971:對不起,錯過了你使用.NET 2.相應地編輯我的答案。 – 2012-02-23 19:31:26