有了这个代码AS3 - 我可以知道一个类是否实现了一个接口(或者是另一个类的子类)?
function someFunction(classParam:Class):Boolean
{
// how to know if classParam implements some interface?
}
即与IEventDispatcher
接口比较classParam
:
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
操作的方法吗?
困扰我的是'describeType'的速度。不是很慢吗? – 2010-03-25 23:13:51
这取决于你使用它的程度,但是,这很慢。问题是我不认为有另一种方法来实现这一点。本文可能会让你感兴趣,作者做了一个基准,并发现UIComponent上的describeType在他的计算机上需要5ms:http://faindu.wordpress.com/2010/02/01/actionscript-flex-dependency-injection-performance/ – 2010-03-26 09:02:24
因此创建对象需要更少的时间?我将运行一个基准来看看它。 – 2010-03-26 13:11:27