Проверить на наличие геттера
Друзья, подскажите, пожалуйста, как проверить наличие в классе геттера, зная строку для обращения? Попытка написать:
Код AS3:
|
Отказаться от использования столь ужасного подхода к программированию?
|
Какая задача стоит перед вами? Вам может помочь рефлексия.
|
Ну какая, вестимо поверить наличие геттера в объекте по строковому ключу.
|
Решил. Оказывается, если геттер не объявлен как public, то ничего не получается. Изначально был с модификатором internal.
Цитата:
|
Чем дольше вы тяните, тем масштабнее будут проблемы и демотивация, но я могу лишь советовать :)
|
СлаваRa, ко мне можно и нужно на "ты" :)
Я же не специально... У меня первый проект, я уже год делаю его для себя, в своё удовольствие и в меру собственных способностей. Расширение кругозора происходит стремительно, поэтому уже раза 2 почти полностью переписывал. И скорее всего, это не последний раз. Если конкретно по обсуждаемому вопросу, но ноги растут вот отсюда. После того как я распихал многочисленные свойства класса Character по нескольким подключаемым классам, возникла проблема с обращениями к ним извне. Они у меня происходят через передачу строкового ID нужного свойства. Раньше я спокойно писал в любом месте, где есть ссылка на экземпляр персонажа: character[PropID], а теперь не могу, так как теперь свойство propID может быть как в самом классе Character, так и в Skills, Personality, Statuses и т.п. На сегодня лучшее, что по этому поводу придумалось - это сделать единый метод, который будет проверять, где "живёт" запрашиваемое свойство, и выдавать его значение. Заодно применять к нему модификаторы, "подрезать" его при необходимости по установленному максимуму и т.п. Вот такой код: Код AS3:
|
Не обращая внимания на весь этот ужас в коде, все же спрошу)
А что если у тебя и _personality и _parameters будет содержать свойство propID? Какое-то странное условие, мягко говоря. И кстати, на сколько я помню, такая конструкция может легко отвалиться с ошибкой, если класс не динамический |
Цитата:
Цитата:
Цитата:
|
с таким подходом не возможно:
- рефакторинг - обнаружение синтаксисческих ошибок на этапе компиляции - обнаружение ошибок логики(вопрос выше про совпадение имен) - нормальная работа IDE - ... |
Часовой пояс GMT +4, время: 23:48. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.