1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программирован. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление
  2. Чат codeby в telegram перезагрузка. Обсуждаем вопросы информационной безопасности и методы защиты информации, программирование. Задавайте свои вопросы и комментируйте чужие. Подробнее ...

    Скрыть объявление

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

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

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

    K-Fire Гость

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

    Darker Гость

    Репутация:
    0
  3. nvyush

    nvyush Well-Known Member
    Lotus team

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

    Yakov Гость

    Репутация:
    0
    Можно попоробовать использовать 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")
     
  5. Akupaka

    Akupaka А че я?.. О.о

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

    K-Fire Гость

    Репутация:
    0
    А как насчет производительности? Есть примеры работы этого в реальных проектах?
     
  7. Akupaka

    Akupaka А че я?.. О.о

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

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

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