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

Тема в разделе "Lotus - Программирование", создана пользователем K-Fire, 21 дек 2009.

Статус темы:
Закрыта.
  1. K-Fire

    K-Fire Гость

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


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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    LotusScript и Visual Basic похожи, но это не есть одно и тоже. Что касается темы поста, то кмк это можно сделать только "ручками". С другой стороны, такая реализация делает невозможной контроль типов. Не совсем понятно, зачем это нужно.
     
  3. Yakov

    Yakov Гость

    Можно попоробовать использовать Execute.
    Примерно так:
    Код (Text):
    '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
    Использовать так:
    Код (Text):
    Use "DynamicCall"
    stringvar = dynamicCall(MyClass, "test")
    stringvar = dynamicCall(MyClass, "getTest2")
     
  4. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    это что-то типа статических методов в Java должно получится?.. О.о
     
  5. K-Fire

    K-Fire Гость

    А как насчет производительности? Есть примеры работы этого в реальных проектах?
     
  6. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    код компилируется и связывается во время исполнения - чем сложнее код, тем дольше (но это обычно не заметно в сравнении с обычным вызовом)
    работает :RTFM: сложнее отладка. неудобства, связанные с необходимыми глобальными переменными.

    зы: это касательно Execute
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей