цикл по именам свойств объекта в ActionScript - PullRequest
1 голос
/ 23 апреля 2010

У меня есть динамический класс, который я создал

public dynamic class SiteZoneFileUploadVO
{       
    public var destination:String = "sitezone";
    public var siteZoneId:uint;
    public var fileType:String;
    public var fileContents:String;

    public function SiteZoneFileUploadVO()
    {
    }

}

когда я пытаюсь перебрать имен свойств этого объекта , он выполняет итерацию только динамически добавленных свойств.

        parameters.dynVar= "value";

        for(var name:String in parameters) 
        {
            trace(name);
        }

Даже если у объекта все свойства равны значению (я проверял это в отладчике), единственное имя свойства , которое будет отслеживаться, это dynVar.

Как я могу перебрать все имена свойств , а не только динамически добавленные?

Ответы [ 3 ]

4 голосов
/ 23 апреля 2010

Вы можете использовать describeType(), чтобы получить XML со всеми методами и переменными вашего класса, а затем отфильтровать свойства, которые вы хотите перебрать (например, все переменные), и сохранить их в XMLList.

В качестве следующего шага вы должны выполнить итерацию по XMLList и использовать квадратные скобки на вашем объекте для доступа к отфильтрованным свойствам по их именам. Однако вы можете получить доступ к общедоступным свойствам только таким образом, потому что describeType() не будет смотреть на частные свойства.

3 голосов
/ 03 ноября 2011

Если вы используете flex:

Посмотрел несколько постов, ObjectUtil.toString был самым многообещающим, затем посмотрел на гибкий исходный код для него, он использует другой метод ObjectUtil.getClassInfo, который именно то, что вам нужно. Если вы просто хотите имена свойств:

ObjectUtil.getClassInfo(myClass).properties

возвращает массив объектов QName, каждый из которых имеет свойство localName, которое даст вам строку для каждого имени свойства

0 голосов
/ 23 апреля 2010

Просто используйте trace(ObjectUtil.toString(parameters)); Это должно дать вам весь ваш объект.

...