С этим кодом
function someFunction(classParam:Class):Boolean
{
// how to know if classParam implements some interface?
}
т.е. Сравнение classParam
с IEventDispatcher
интерфейсом:
someFunction(EventDispatcher) // returns true
someFunction(Object) // returns false
Я знаю, что это невозможно сделать с оператором is
. Но есть ли способ сделать это? Есть ли способ узнать, реализует ли класс какой-то интерфейс? (или является подклассом другого класса?)
Возможные решения:
A. Создание объекта classParam
и использование этого объекта для сравнения с использованием оператора is
.
function someFunction(classParam:Class):Boolean
{
return (new classParam()) is IEventDispatcher
}
B. Использование describeType()
function someFunction(classParam:Class):Boolean
{
var xml:XML = describeType(classParam)
// found "implementsInterface" value in xml and compare to IEventDispatcher
}
Есть способ, который НЕ ИСПОЛЬЗУЕТ describeType
или создает оператор new
?