Como posso listar todas as propriedades const definidas em uma classe
-
28-09-2019 - |
Pergunta
Como posso listar todos os nomes (e valores) da constituição pública (e privada / protegida) definida em uma classe?
public class Layers {
public const BACKGROUND:String = "background";
public const PARENT:String = "parent";
public const MAP:String = "map";
public const LINES:String = "lines";
public const POINTS:String = "points";
public const WINDOWS:String = "windows";
...
public function isValidValue(type:String) {
// ...
// if type is a value of a constant return TRUE
// ...
}
}
Solução
Em tempo de execução, você pode usar o descriptyType () para listar todos os vars públicos (sem muita certeza sobre o ConstS) e muito mais informações também.
http://www.adobe.com/livedocs/flash/9.0/actionScriptLangrefv3/flash/utils/package.html#descriptype()
Privados são mais complicados de obter.
Não tenho certeza se não seria mais rápido criar uma matriz das constantes e depois usar o Array.Indexof (Type)
PS Eu também acredito que existe uma versão JSON do descriTEType () agora, em algum lugar.
Outras dicas
Isso funciona com AS3 e Flex 4.5.1
public static function isValidValue(type:String):Boolean {
var m_constNameList:XMLList = describeType(Layers).descendants("constant");
for each(var obj:Object in m_constNameList){
if (type == Layers[obj.@name]){
return true;
}
}
return false;
}
O FlashBuilder AutoCompletion fornecerá toda a constante da sua classe e muito mais.