Con este códigoAS3 - ¿Puedo saber si una clase implementa una interfaz (o es una subclase de otra clase)?
function someFunction(classParam:Class):Boolean
{
// how to know if classParam implements some interface?
}
decir Comparando con classParam
IEventDispatcher
interfaz:
someFunction(EventDispatcher) // returns true
someFunction(Object) // returns false
Sé que no se puede hacer con is
operador. Pero, ¿hay alguna manera de hacerlo? ¿Hay alguna manera de saber si una clase implementa alguna interfaz? (O es una subclase de otra clase?)
soluciones posibles:
A. Creación de un objeto de classParam
y el uso de ese objeto de comparar el uso de is
operador.
function someFunction(classParam:Class):Boolean
{
return (new classParam()) is IEventDispatcher
}
B. Usando describeType()
function someFunction(classParam:Class):Boolean
{
var xml:XML = describeType(classParam)
// found "implementsInterface" value in xml and compare to IEventDispatcher
}
Hay una manera que no utiliza describeType
o crea un operador de new
?
Lo que me molesta es la velocidad del 'describeType'. ¿No es lento? –
Depende de cuánto lo esté usando, pero sí, es bastante lento. El problema es que no creo que haya otra forma de lograr esto. En este artículo te podría interesar, el autor hizo un punto de referencia y descubrió que un describeType en UIComponent toma 5ms en su ordenador: http://faindu.wordpress.com/2010/02/01/actionscript-flex-dependency-injection-performance/ –
¿Entonces crear el objeto tomará menos tiempo? Voy a ejecutar un punto de referencia sobre eso para verlo. –