1

たとえば、次のような複数のクラスがあります。

MyClassA.propertyAlpha
MyClassB.propertyTango
MyClassC.propertyBravo
MyClassD.propertyBeta
MyClassE.propertyCharlie
MyClassF.propertyRoger
MyClassG.propertyWilco

上記のタイプのいずれかのクラスのインスタンスと静的プロパティの名前を取得します (理由は関係ありません)。

その情報だけで静的プロパティを取得または設定するにはどうすればよいですか (理由は関係ありません)。

4

1 に答える 1

3

インスタンスで値に直接アクセスすることはできません。これはそのクラスのプロパティであるため、その上でアクセスする必要があります。

これには 2 つの方法があります。

constructor次のプロパティを使用します。

function getStaticProperty( instance:Object, property:String ) : * {
    return instance.constructor[property];
}

または、 と を使用getQualifiedClassNamegetDefinitionByNameてクラスを取得してからプロパティ値を取得します。

function getStaticProperty( instance:*, property:String ) : * {
    var className:String = getQualifiedClassName( instance ).replace("::",".");
    var clazz:Class = getDefinitionByName( className ) as Class;
    return clazz[property];
}
于 2012-05-05T09:24:39.243 に答える