Я получаю несколько свойств элемента управления.Вот как я использовал для извлечения свойств (с pinfo типа PropertyInfo):
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
с этим значением по умолчанию.
Итак, как мне получить значение по умолчанию для необязательного параметра?