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

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

K-Fire

Т.е. допустим есть класс:
Код:
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


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

nvyush

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

Yakov

Можно попоробовать использовать 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")
 
A

Akupaka

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!