2010-07-13 5 views
0

네, .NET 라이브러리의 복잡한 객체를 WebOrb를 통해 Flex 어플리케이션에 전달하고 있습니다. 자동으로 다음과 같이 나는 [RemoteClass라는] 메타 데이터 태그를 사용하고 번역하기 위해 :[RemoteClass]를 사용하여 ArrayCollection 속성 채우기

[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 라이브러리에서 자식을 반환하는 경우에도 ActionScript Plan 클래스의 children 속성은 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

set 메소드가 호출되지 않는다는 것은 놀라운 일이 아닙니다. 개체는 이론적으로 이미 설정된 항목을 사용하여 서버에서 반환되어야합니다.

그렇다고해서 ArrayCollection이 서버 측 객체와 일치하지 않는다고 생각합니다. Flex에서 Array를 사용해보십시오. .NEt에서는 "지원되는"유형 중 하나를 사용해야합니다. List가 IList의 구현이라면, 아마도 괜찮을 것이다.

여기에 .NET to Flash Player WebORB Conversion Chart

+0

배열이 있습니다. 당연하지! 듀얼! 대단히 감사합니다. 단순히 ArrayCollection에서 변경하면 완벽하게 작동합니다! – user176504

+0

도와 드리겠습니다! ArrayCollection이 필요한 경우에는 항상 변환을 수행하는 getChildrenAsArrayCollection과 같은 메소드를 추가 할 수 있습니다. Flex 클래스에 새 속성을 추가 할 때는주의해야합니다. 자동 AMF 변환을 방해 할 수 있습니다. – JeffryHouser

관련 문제