2010-07-13 2 views
0

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

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

    public var Name:String; 
} 

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

.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, свойство children класса ActionScript Plan равно null.

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

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; 
} 

но набор функций никогда не вызывается.

Что можно сделать, чтобы дети попали в мое приложение Flex таким образом?

Спасибо!

ответ

0

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

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

.NET to Flash Player WebORB Conversion Chart

+0

Array! Конечно! DUUUUUH !!! Большое спасибо, просто сменив его с ArrayCollection! – user176504

+0

Рад помочь! Если вам нужен ArrayCollection, вы всегда можете добавить такой метод, как getChildrenAsArrayCollection, который выполняет преобразование для вас. Однако будьте осторожны при добавлении новых свойств в класс Flex, так как это может нарушить автоматическое преобразование AMF. – JeffryHouser