2010-07-13 20 views
0

OK, je passe un objet complexe de ma bibliothèque .NET à mon application Flex via WebOrb. Afin de traduire automatiquement, je suis en utilisant le [RemoteClass] meta tag données comme suit:Remplissage d'une propriété ArrayCollection à l'aide de [RemoteClass]

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

    public var Name:String; 
} 

Cela fonctionne tout à fait bien, jusqu'à ce que j'essaie d'étendre la classe de plan pour contenir un tableau d'éléments complexes:

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

Dans ce cas, même lorsque les enfants sont renvoyés par la bibliothèque .NET, la propriété children de la classe ActionScript Plan est null.

J'ai essayé de changer le domaine des enfants à une propriété comme celui-ci:

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

mais la fonction de jeu ne devient jamais appelé.

Que puis-je faire pour intégrer les enfants dans mon application Flex de cette manière?

Merci!

Répondre

0

Ce n'est pas une surprise pour moi que la méthode set ne soit jamais appelée. L'objet devrait, théoriquement, revenir du serveur avec les éléments déjà définis. Cela dit, je ne pensais pas qu'un ArrayCollection correspondrait à un objet côté serveur. Essayez d'utiliser un tableau dans Flex. En .NEt vous devez utiliser l'un des types "pris en charge". Si List est une implémentation de IList, alors vous allez probablement bien.

Voici le

+0

Un tableau! Bien sûr! DUUUUHH !!! Merci beaucoup, le simple changement de l'ArrayCollection a parfaitement fonctionné! – user176504

+0

Content de vous aider! Si vous avez besoin d'un ArrayCollection, vous pouvez toujours ajouter une méthode comme getChildrenAsArrayCollection qui effectue la conversion pour vous. Attention cependant à ajouter de nouvelles propriétés à la classe Flex, car cela pourrait perturber la conversion automatique AMF. – JeffryHouser