Como en Java, quiero saber si mi referencia está declarada como interfaz.¿Cómo identificar si la referencia de clase es una interfaz?
function foo(classRef:Class){
if(classRef.isInterface(){
//something
}
}
Como en Java, quiero saber si mi referencia está declarada como interfaz.¿Cómo identificar si la referencia de clase es una interfaz?
function foo(classRef:Class){
if(classRef.isInterface(){
//something
}
}
Usted puede utilizar AS3 Commons Reflect para obtener esta información. Su función sería entonces algo como esto:
function foo(classRef:Class)
{
var type:Type = Type.forClass(classRef);
if (type.isInterface)
{
//something
}
}
Mi propia exploración. Si clase es interfaz, que en la descripción XML en el nodo <factory>
, nunca contendrá <constructor>
y <extendsClass>
. Por lo tanto, se trata de una función:
private function isInterface(type : *):Boolean {
var description : XML = describeType(type);
return (description.factory[0].descendants("constructor").length() == 0
&& description.factory[0].descendants("extendsClass").length() == 0);
}
prueba:
trace(isInterface(IEventDispatcher));
trace(isInterface(Button));
trace(isInterface(int));
trace(isInterface(XML));
trace(isInterface(String));
Salida:
[trace] true
[trace] false
[trace] false
[trace] false
[trace] false
gracias, no sabía nada de que buena biblioteca –
gracias por compartir información acerca de esta biblioteca. – Mady