检查Class是否实现特定接口

时间:2011-09-07 00:00:54

标签: actionscript-3 interface implementation

在ActionScript 3.0中,有几种方法可以检查类的扩展名。例如,如果我想知道自定义类扩展Sprite我可以使用is运算符:

trace(MyClass is Sprite);

或者我可以使用flash.utils.getQualifiedSuperclassName

trace(getQualifiedSuperclassName(MyClass));

我想接受一个类作为参数,并检查传递的类是否实现了某个接口。是否有一种同样简单或常见的方法来检查我的自定义类是否遵循接口?也许是这样的:

trace(MyClass implements IMyInterface);

2 个答案:

答案 0 :(得分:3)

为什么不只是trace(MyClass is IMyInterface);

答案 1 :(得分:3)

使用类似这样的功能:

public function isImplementing( MyClass:Class, MyInterface:Class ):Boolean
{
    var description:XML = describeType( MyClass );
    var interfaceName:String = getQualifiedClassName( MyInterface );
    return Boolean( description.factory.implementsInterface.( @type == interfaceName ).length() != 0 );
}

如果类正在实现接口,则此函数返回true。