HaxeからC#にArray<T>を出力したらobject[]になるのを回避したい
Haxeの Array<T> をC#出力すると、 object[] になってしまい、型〜〜〜〜〜〜〜!!!!!ってなるのをどうしたものかと考えました。
この挙動自体は仕様で間違いないらしい
https://github.com/HaxeFoundation/haxe/issues/5434#issuecomment-230581990
要件
- Haxe, Lua, C#出力が出来る
- C#で
Array<T>で取れる - 当たり前ながら、Haxeでも
Array<T>で取れる - HaxeでSerialize/Deserializeした結果と、C#でSerialize/Deserializeした結果が同じになる
結果
package aprotHx.type;
import haxe.ds.Vector;
@:generic
class ArrayWrapper<T>
{
public function new() {}
public var value: Array<T> = [];
public function toTyped(): Vector<T>
{
var v = new Vector<T>(value.length);
for (i in 0...value.length)
{
v[i] = value[i];
}
return v;
}
}他の案
Conditional Compilationでわける
Serialize/Deserializeした結果が同じになるようにするのが思ったより大変だった
http://old.haxe.org/ref/conditionals
Array, Vectorのinterfaceを自力で実装する
あまりに辛い
でも、いつかやるかも
あとがき
もうちょいどうにかならんかな・・・