有了這個代碼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