Я использую отличные библиотеки org.as3commons.reflect и org.as3commons.lang и столкнулся с проблемой. У меня есть статический метод в одном из моих классов, который должен отразить его класс. В библиотеке отражений есть статический метод Type.forClass (clazz: Class), для которого явно требуется переменная Class. В статических методах / коде не разрешено ключевое слово this , поэтому теперь мне нужно узнать, есть ли способ получить класс, для которого вызывается мой статический метод.
Мне нужно что-то, что будет работать в неотладочной версии Flash Player, поэтому любые трюки Error.getStackTrace () не будут работать. Жаль, что в обычной виртуальной машине нет трассировки стека.
import org.as3commons.lang.ClassUtils;
import org.as3commons.reflect.Type;
protected static function doReflection(): void
{
var aClass: Class = ClassUtils.forInstance(this); // this not allowed in static methods
var ct: Type = Type.forClass(aClass);
// do stuff with type
}
Я отказался от поиска в Google и других сайтах; всегда заканчивали тем, что получали учебники и советы по всем вопросам, связанным со статическими элементами, проблемами производительности, всем , кроме того, что я ищу.
В целом, я хочу кэшировать кучу вещей о классе в статических членах, чтобы сохранить ненужную работу каждый раз, когда создается экземпляр класса.
Буду признателен за любую помощь.