2011-10-10 32 views

Trả lời

4

Bạn có thể sử dụng AS3 Commons Reflect để có được thông tin này. Chức năng của bạn sẽ trông giống như sau:

function foo(classRef:Class) 
{ 
    var type:Type = Type.forClass(classRef); 

    if (type.isInterface) 
    { 
     //something 
    } 
} 
+0

cảm ơn, không biết về thư viện đẹp đó –

+0

cảm ơn bạn đã chia sẻ thông tin về thư viện này. – Mady

3

Khám phá của riêng tôi. Nếu lớp là giao diện, ngoài XML mô tả trong nút <factory>, nó sẽ không bao giờ chứa <constructor><extendsClass>. Vì vậy, đây là một chức năng:

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); 
} 

Test:

trace(isInterface(IEventDispatcher)); 
trace(isInterface(Button)); 
trace(isInterface(int)); 
trace(isInterface(XML)); 
trace(isInterface(String)); 

Output:

[trace] true 
[trace] false 
[trace] false 
[trace] false 
[trace] false 
Các vấn đề liên quan