Получить значения проперти/метода класса по имени

  • Автор темы K-Fire
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

K-Fire

#1
Т.е. допустим есть класс:
Код:
Class MyClass
public test as String
public Function getTest2() as String
getTest2="1"
End function
End Class
Хочется иметь возможность делать что-то типа такого:

stringvar = MyClass.getField("test").Value
или
stringvar = MyClass.getMethod("getTest2").Value


Понятно что можно самому реализовать в классе специальный метод, который это все будет делать, но для больших классов это масса работы.
 

nvyush

Lotus team
22.04.2009
2 317
0
#3
LotusScript и Visual Basic похожи, но это не есть одно и тоже. Что касается темы поста, то кмк это можно сделать только "ручками". С другой стороны, такая реализация делает невозможной контроль типов. Не совсем понятно, зачем это нужно.
 
Y

Yakov

#4
Можно попоробовать использовать Execute.
Примерно так:
Код:
'Library DynamicCall
Public object As Variant
Public value As Variant
Public Function dynamicCall(obj As Variant, methodName As String) As Variant
Set object = obj
Execute {Use "DynamicCall"
Sub Initialize
value = object.} + methodName + {
End Sub}
dynamicExecute = value
End Function
Использовать так:
Код:
Use "DynamicCall"
stringvar = dynamicCall(MyClass, "test")
stringvar = dynamicCall(MyClass, "getTest2")
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#7
А как насчет производительности?
код компилируется и связывается во время исполнения - чем сложнее код, тем дольше (но это обычно не заметно в сравнении с обычным вызовом)
Есть примеры работы этого в реальных проектах?
работает :RTFM: сложнее отладка. неудобства, связанные с необходимыми глобальными переменными.

зы: это касательно Execute
 
Статус
Закрыто для дальнейших ответов.