No puede hacerlo en tiempo de ejecución sin información en tiempo de compilación. Puede hacerlo con RTTI o con Macros. RTTI sería más fácil de implementar, aunque podría ser un poco más lento si necesita analizar RTTI varias veces.
Su clase se convertiría entonces en:
class MyClass implements haxe.rtti.Infos {
private var num : Int;
}
y para obtener el tipo de campo:
var rtti : String = untyped MyClass.__rtti;
var x = Xml.parse(rtti).firstElement();
var infos = new haxe.rtti.XmlParser().processElement(x);
switch(infos)
{
case TClassdecl(cl):
for (f in cl.fields)
{
if (f.name == "num")
{
trace(f.type);
}
}
default:
}
Gracias por la respuesta. ¿Hay alguna forma de agregar esta información manualmente a la clase (a algún campo mágico oculto)? XML parece ser una gran exageración. – vbence
sí, pero necesitaría usar macros. La forma más fácil sería usar una macro de compilación (http://haxe.org/manual/macros/build) – Waneck
, pero también puede hacer el análisis xml una vez y almacenar el resultado en un campo estático – Waneck