如果字段类型实现给定的接口,如何检查宏?

时间:2014-10-25 18:38:07

标签: reflection haxe

我可以达到该字段的ClassType,但是在ClassType之间没有相等的测试。

1 个答案:

答案 0 :(得分:2)

ClassType定义如下:

typedef ClassType = {> BaseType,
    var kind : ClassKind;
    var isInterface : Bool;
    var superClass : Null<{ t : Ref<ClassType>, params : Array<Type> }>;
    var interfaces : Array<{ t : Ref<ClassType>, params : Array<Type> }>;
    var fields : Ref<Array<ClassField>>;
    var statics : Ref<Array<ClassField>>;
    //var dynamic : Null<Type>;
    //var arrayAccess : Null<Type>;
    var constructor : Null<Ref<ClassField>>;
    var init : Null<TypedExpr>;
    var overrides : Array<Ref<ClassField>>;
}

BaseType(它继承自的)包含modulename字段,因此您应该能够检查interfaces中每个项目的模块和名称名单。或者,您可以依靠Ref.toString()返回完全限定名称:

for(interfaceRef in Context.getLocalClass().get().interfaces) {
    if(interfaceRef.t.toString() == "flash.events.IEventDispatcher") {
        return true;
    }
}
return false;