我正在检索控件的多个属性。这里是我用来检索性能(与类型的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