【发布时间】:2012-03-14 02:02:27
【问题描述】:
我正在检索控件的几个属性。以下是我用来检索属性的方式(使用 PropertyInfo 类型的 pinfo):
value = pinfo.GetValue(obj, nothing)
效果很好,但现在我面临一个具有可选值的属性,我收到一条错误消息,告诉我参数的数量不正确。所以我用这个改变了我的代码:
Dim index As Object() = {Nothing}
value = pinfo.GetValue(obj, index)
此时,我没有收到任何错误消息,但是这段代码没有检索到好的值。仅当我将 Nothing 替换为属性访问器提供的默认值时才有效...
但是我事先不知道这个默认值是什么!而且这段代码是在一个函数中,它检索没有可选值的属性,所以我不能更改代码,特别是针对一种情况或另一种情况..
有什么想法吗?我正在开发 .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。
那么,如何获取可选参数的默认值?
【问题讨论】:
标签: asp.net .net vb.net reflection properties