2011-12-06 52 views

Respuesta

3

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: 
    } 
+0

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

+0

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

+0

, pero también puede hacer el análisis xml una vez y almacenar el resultado en un campo estático – Waneck

Cuestiones relacionadas