Как взломать приватное статическое поле во Flex? - PullRequest
0 голосов
/ 06 июня 2009

Есть ли способ изменить частное статическое поле инопланетного класса?

Например:

package mx.managers {
   public class TooltipManager ... {
        private static var _impl:IToolTipManager2; // <- assign my own value here
        ...
   }
}

В Java это можно сделать с помощью Reflection API. А как насчет Flex?

Ответы [ 2 ]

4 голосов
/ 07 июня 2009

Нет, это невозможно.

Если вы хотите изменить реализацию TooltipManager, взгляните на класс Singleton в Flex SDK. Вам нужно будет создать собственную реализацию и зарегистрировать ее через класс Singleton, прежде чем приложение инициализируется. Лучше всего переопределить предварительный загрузчик приложения и выполнить там регистрацию.

0 голосов
/ 07 июня 2009

Что ж, если вы чувствуете, что можете справиться с дополнительной ответственностью, вы можете обезопасить класс, скопировав исходный код в ваше собственное дерево исходников с тем же пакетом и применив необходимые изменения. Таким образом, компилятор flex будет использовать вашу реализацию, а не реализацию SDK.

Этот метод иногда используется в качестве крайней меры для устранения проблем, которые не могут быть исправлены иначе. К недостаткам относятся такие проблемы, как прямая совместимость и непреднамеренные побочные эффекты в тех же или других классах, в зависимости от класса, который вы редактируете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...