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を自力で実装する
あまりに辛い
でも、いつかやるかも
あとがき
もうちょいどうにかならんかな・・・