如何检查对象是否是Haxe中给定类的后代?

时间:2017-06-29 11:08:36

标签: oop haxe

我希望能够检查对象是否是给定类的后代,但似乎不可能。

我想从C#中移植以下代码:

public virtual Systems Add(ISystem system) {
    var initializeSystem = system as IInitializeSystem;
    if(initializeSystem != null) {
        _initializeSystems.Add(initializeSystem);
    }

    var executeSystem = system as IExecuteSystem;
    if(executeSystem != null) {
        _executeSystems.Add(executeSystem);
    }

    var cleanupSystem = system as ICleanupSystem;
    if(cleanupSystem != null) {
        _cleanupSystems.Add(cleanupSystem);
    }

    var tearDownSystem = system as ITearDownSystem;
    if(tearDownSystem != null) {
        _tearDownSystems.Add(tearDownSystem);
    }

    return this;
}

在Haxe中实现相同功能的最佳方法是什么? 请注意,对象可能是我正在测试的几个类的后代。

1 个答案:

答案 0 :(得分:3)

您是否尝试过Std.is()

if (Std.is(system, IInitializeSystem)) {
    _initializeSystems.add(cast system);
}

if (Std.is(system, IExecuteSystem)) {
    _executeSystems.add(cast system);
}

// etc