as3-commons-reflectよりASReflectを選ぶ

通常の静的言語の経験者から見れば、ActionScript3.0(以降AS3)の標準リフレクション機構はとても貧弱なものです。対象のオブジェクトに対してdescribeType関数というものを呼び出すと、そのオブジェクトの構造をXMLで返してくれます。しかし、必要なプロパティやメソッドの情報を引き抜くにはXMLに対してDOM操作をする必要があり、非常に手間がかかります。

var hoge:Hoge = new Hoge();
var info:XML = describeType(hoge);

残念ながら、AS3には標準でjava.lang.Reflectのような機構が備わっていないのです。これは非常に残念なわけですが、AS3にも多くのOSSライブラリが存在しています。Javaで言うところのcommonsプロジェクトもあって、リフレクションに特化したas3-commons-reflectが存在します。Java経験者であれば、それほど違和感なく使えるはずです。
ちょっと残念だったのが、as3-commons-reflectではフィールドへの直接アクセスができないことですね。値は取れても、セットはできないです。ちゃんとプロパティとして用意しろっていう思想なんでしょうかね・・・
そこで、個人的にはas3-commons-reflectよりオススメなのがSpark ProjectASReflectです。Spark Projectは国産のASライブラリ・フレームワークを作ってるOSSプロジェクトで、様々なプロダクトが用意されています(ちなみにFlex4のSparkコンポーネントアーキテクチャとは全然別物)。ASReflectでは前述のフィールドアクセスも可能です。今の案件でFlexの薄いフレームワークを実装する際に、最初はas3-commonsを使っていましたが、そんな理由でASReflectに乗り換えたわけであります。