如何在Haxe的C#代码输出中保留泛型类型?

时间:2020-04-05 06:32:00

标签: haxe

我想使用C#类型的数组。

我尝试在Haxe 4.0.5中构建以下代码,但是hoges在C#中是Array<object>。 (我想要Array<Hoge>

class ArrayTest
{
    public var hoges: Array<Hoge>;
}

class Hoge
{
    public var x: Int;
    public var y: Int;
    public var z: Int;
}

我在github上找到了以下帖子,并了解此行为是使代码更快的规范。 https://github.com/HaxeFoundation/haxe/issues/5434#issuecomment-230581990

但是,我希望它带有一种类型,因为我想将此代码用作接口。 有什么解决方法吗?

2 个答案:

答案 0 :(得分:2)

如果主要是为了与外部代码进行交互,则使用特定于C#的集合可能更合适:

import cs.system.collections.generic.List_1;

class Main {
    public static var hoges:List_1<Hoge> = new List_1();
    static function main() {
        hoges.Add(new Hoge());
        trace(hoges[0]);
    }
}
class Hoge {
    public var x: Int;
    public var y: Int;
    public var z: Int;
    public function new() {}
}

产生

public static global::System.Collections.Generic.List<global::Hoge> hoges;

如您所愿。

摘要可用于根据目标平台切换实现。

答案 1 :(得分:2)

您可以使用NativeArray

typedef Hoges = cs.NativeArray<Hoge>;
class ArrayTest { public var hoges: Hoges; }

正在生成

public global::Hoge[] hoges;
相关问题