【问题标题】:Check if Class Implements a Specific Interface检查类是否实现特定接口
【发布时间】:2011-09-07 00:00:54
【问题描述】:

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

trace(MyClass is Sprite);

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

trace(getQualifiedSuperclassName(MyClass));

我想接受一个类作为参数并检查传递的类是否实现了某个接口。是否有同样简单或通用的方法来检查我的自定义类是否符合接口?可能是这样的:

trace(MyClass implements IMyInterface);

【问题讨论】:

    标签: actionscript-3 interface implementation


    【解决方案1】:

    使用类似这样的功能:

    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。

    【讨论】:

    • Allan 的解决方案对我不起作用。但是这个可以。
    【解决方案2】:

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

    【讨论】:

    • 哦!哈哈。我想我应该在假设它不起作用之前尝试过。谢谢。
    • 不知道这是错误的公认答案。这适用于实例,而不是类
    猜你喜欢
    • 2016-09-29
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 2013-09-05
    • 2016-10-13
    • 1970-01-01
    相关资源
    最近更新 更多