Java'da olduğu gibi Referansımın Arabirim olarak bildirilip bildirilmediğini öğrenmek istiyorum.Sınıf referansı bir arabirim olup olmadığı nasıl belirlenir?
function foo(classRef:Class){
if(classRef.isInterface(){
//something
}
}
Java'da olduğu gibi Referansımın Arabirim olarak bildirilip bildirilmediğini öğrenmek istiyorum.Sınıf referansı bir arabirim olup olmadığı nasıl belirlenir?
function foo(classRef:Class){
if(classRef.isInterface(){
//something
}
}
Bu bilgilere ulaşmak için AS3 Commons Reflect kullanabilirsiniz Yani, bu bir işlevdir. İşleviniz sonra böyle görünecektir:
function foo(classRef:Class)
{
var type:Type = Type.forClass(classRef);
if (type.isInterface)
{
//something
}
}
Kendi keşiflerim. Sınıf arabirimse, <factory>
düğümündeki XML tanımında olduğundan hiçbir zaman <constructor>
ve <extendsClass>
içeremez.
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);
}
Testi:
trace(isInterface(IEventDispatcher));
trace(isInterface(Button));
trace(isInterface(int));
trace(isInterface(XML));
trace(isInterface(String));
Çıktı:
[trace] true
[trace] false
[trace] false
[trace] false
[trace] false
sayesinde bu güzel kütüphaneden ilgili bu kütüphane hakkında bilgi paylaşımı için –
teşekkür bilmiyordum. – Mady