ОК, я передаю сложный объект из моей библиотеки .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 таким образом?
Спасибо!
Array! Конечно! DUUUUUH !!! Большое спасибо, просто сменив его с ArrayCollection! – user176504
Рад помочь! Если вам нужен ArrayCollection, вы всегда можете добавить такой метод, как getChildrenAsArrayCollection, который выполняет преобразование для вас. Однако будьте осторожны при добавлении новых свойств в класс Flex, так как это может нарушить автоматическое преобразование AMF. – JeffryHouser