Можно ли использовать отражение AS3, чтобы узнать, был ли метод переопределен?
Мне нужен метод, подобный:
protected function isOverriden(methodName:string) : bool
{
//magic here!
//...
return awesomeLocalVariable;
}
Итак, я передаю имя метода в виде строки, а метод isOverridden возвращает true, только если и только если у объекта есть метод с таким именем и он переопределяется из своей первоначальной реализации.
Есть идеи, как закодировать там магию?
Спасибо.
Редактировать: По запросу, контекст проблемы:
Я создаю основу для создания игр для AS3. Я хочу предоставить «компоненты» для моих игровых объектов, каждый компонент обеспечивает функциональность для игрового объекта, к которому он применяется. Компоненты основаны на событиях (onClick, onUpdate, onShapeCollision и т. Д.). Мне нужен этот код в классе Component, поэтому я могу регистрировать только те события, которые реализует класс, производный от Component (переопределяет).
Пример компонента:
public class CTrace extends ScriptComponent
{
public override function onClick(event:MouseEvent = null):void
{
trace(Owner.Id);
}
}
Фреймворк должен зарегистрировать метод onClick в качестве обработчика событий для события MouseEvent.CLICK, поскольку он переопределяет реализацию по умолчанию.
Зачем мне нужна реализация по умолчанию? Потому что я хочу, чтобы классы переопределяли поддерживаемые методы, поэтому произойдет ошибка времени компиляции, если пользователь попытается использовать неподдерживаемое событие.
Имеет ли это смысл?