![]() |
|
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 476
|
![]() Друзья, подскажите, пожалуйста, как проверить наличие в классе геттера, зная строку для обращения? Попытка написать:
выдаёт false, даже если геттер в нём прописан. Больше ничего дельного в голову не приходит.
__________________
Не сломано - не чини! |
|
|||||
Отказаться от использования столь ужасного подхода к программированию?
__________________
местонахождение |
|
|||||
Какая задача стоит перед вами? Вам может помочь рефлексия.
|
|
|||||
Ну какая, вестимо поверить наличие геттера в объекте по строковому ключу.
__________________
местонахождение |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 476
|
Решил. Оказывается, если геттер не объявлен как public, то ничего не получается. Изначально был с модификатором internal.
Это процесс не быстрый ![]()
__________________
Не сломано - не чини! |
|
|||||
Чем дольше вы тяните, тем масштабнее будут проблемы и демотивация, но я могу лишь советовать
![]()
__________________
местонахождение |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 476
|
СлаваRa, ко мне можно и нужно на "ты"
![]() Я же не специально... У меня первый проект, я уже год делаю его для себя, в своё удовольствие и в меру собственных способностей. Расширение кругозора происходит стремительно, поэтому уже раза 2 почти полностью переписывал. И скорее всего, это не последний раз. Если конкретно по обсуждаемому вопросу, но ноги растут вот отсюда. После того как я распихал многочисленные свойства класса Character по нескольким подключаемым классам, возникла проблема с обращениями к ним извне. Они у меня происходят через передачу строкового ID нужного свойства. Раньше я спокойно писал в любом месте, где есть ссылка на экземпляр персонажа: character[PropID], а теперь не могу, так как теперь свойство propID может быть как в самом классе Character, так и в Skills, Personality, Statuses и т.п. На сегодня лучшее, что по этому поводу придумалось - это сделать единый метод, который будет проверять, где "живёт" запрашиваемое свойство, и выдавать его значение. Заодно применять к нему модификаторы, "подрезать" его при необходимости по установленному максимуму и т.п. Вот такой код: public function getProp (propID: String) : * // Возвращает значение свойства по ID { if (this.hasOwnProperty(propID)) return this[propID]; var componentID: String = this.redirectByPropID(propID); return this[componentID][propID]; } protected function redirectByPropID(propID: String) : String // Возвращает ID компонента, хранящего свойство { if (_personality.hasOwnProperty(propID)) return ChIDs.COMPONENT_PERSONALITY; if (_parameters.hasOwnProperty(propID)) return ChIDs.COMPONENT_PARAMETERS; if (_skills.hasOwnProperty(propID)) return ChIDs.COMPONENT_SKILLS; throw (CLASS_DEBUG_NAME + "-> redirectByPropID: неизвестный ID параметра. Используйте константы класса ID персонажей!"); }
__________________
Не сломано - не чини! |
|
|||||
Не обращая внимания на весь этот ужас в коде, все же спрошу)
А что если у тебя и _personality и _parameters будет содержать свойство propID? Какое-то странное условие, мягко говоря. И кстати, на сколько я помню, такая конструкция может легко отвалиться с ошибкой, если класс не динамический
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 476
|
Ужас - в самом подходе или в его реализации? Не стесняйся, мне самому не нравится, но ничего лучше не придумалось пока.
Цитата:
Цитата:
__________________
Не сломано - не чини! |
|
|||||
с таким подходом не возможно:
- рефакторинг - обнаружение синтаксисческих ошибок на этапе компиляции - обнаружение ошибок логики(вопрос выше про совпадение имен) - нормальная работа IDE - ...
__________________
местонахождение |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:16. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|