Заполнение свойства ArrayCollection с использованием [RemoteClass] - PullRequest
0 голосов
/ 13 июля 2010

ОК, я передаю сложный объект из библиотеки .NET в приложение Flex через WebOrb.Для автоматического перевода я использую тег метаданных [RemoteClass] следующим образом:

[RemoteClass(alias="test.PlanVO")]
public class Plan
{
    [SyncId]
    public var id:int;

    public var Name:String;
}

Это работает абсолютно нормально, пока я не попытаюсь расширить класс Plan, чтобы он содержал массив сложных элементов:

.NET:

public class PlanVO
{
    public int id  { get; set; }
    public string Name { get; set; }
    public List<PlanElementVO> children { get; set; }
}

public class PlanElementVO
{
    public string elementName { get; set; }
}

ActionScript:

[RemoteClass(alias="test.PlanVO")]
public class Plan
{
    [SyncId]
    public var id:int;

    public var Name:String;

    public var children:ArrayCollection;
}

[RemoteClass(alias="test.PlanElementVO")]
public class PlanElement
{
    public var elementName:String;
}

В этом случае, даже когда дочерние элементы возвращаются из библиотеки .NET, дочерние свойства плана ActionScriptclass is null.

Я попытался изменить поле children на свойство, подобное этому:

private var _children:ArrayCollection;
public function get children():ArrayCollection 
{
    return _children;
}
public function set children(o:*):void
{
    if(o is ArrayCollection)
        _children = o;
    else if(o is Array)
        _children = new ArrayCollection(o);
    else
        _children = null;
}

, но функция set никогда не вызывается.

Что я могу сделатьтаким образом включить детей в мое приложение Flex?

Спасибо!

1 Ответ

0 голосов
/ 13 июля 2010

Не удивительно, что метод set никогда не вызывался.Теоретически объект должен возвращаться с сервера с уже установленными элементами.

Тем не менее, я не думал, что ArrayCollection будет соответствовать объекту на стороне сервера.Попробуйте использовать массив во Flex.В .NEt вы должны использовать один из «поддерживаемых» типов.Если List является реализацией IList, то вы, вероятно, в порядке.

Вот таблица преобразования .NET в Flash Player WebORB

...