2009-08-28 3 views
1

ASP.NET 3.5/Silverlight에서 서버에서 클라이언트로 4 개의 작은 목록을 보내야하는 경우가 있습니다. 각 하위 목록은 개체의 목록입니다. 클라이언트의 한 번의 호출로이 작업을 수행하고 싶습니다.목록에 다른 유형의 개체가있는 목록의 목록 만들기

따라서, 예를 들어 :

중고 장비 구매는 POHeader의 목록 POLine의 목록이 여기서 listc 객체입니다 ListB는 공급 업체의 목록 여기서 listd이 프로젝트의 목록 것

ListX 객체입니다 오브젝트입니다 개체입니다 4 개의리스트의 각각을 포함한 List.

이러한 개체는 각각 다른 구조를 가지고 있습니다. List가 클라이언트에게 돌아 왔을 때, 나는 그것을 분해하여 4 개의 서브리스트 각각을 관련 컨트롤에 바인딩 할 것이다.

C#에서 가능합니다. 목록 목록의 예를 보았지만 각 하위 목록은 같은 유형이었습니다. 당신은 항상 4리스트를 가지고 있기 때문에

많은 감사 마이크 토마스

답변

4

, 단지 그들을 유지하기 위해 사용자 정의 클래스를 만들고, 그 뒤로 패스 :

class POCollection 
{ 
    IList<POHeader> Headers { get; private set; } 
    IList<POLine> Lines { get; private set; } 
    // etc... 
} 
+1

당신은 당신이 실제로 정의 개체가 있는지 확인하기 위해 노력하고 시작해야 목록리스트 목록을 가지고 시작할 때마다 ... 검색 다시 캐스팅. – DataDink

+0

DataDink - 조금 더 자세히 설명해 주시겠습니까? 예제를 제공해 주시겠습니까 ?? 마이크 토마스 –

0

당신은 목록으로 다시 보낼 수 있습니다 객체는 다음 클라이언트의 목록을 재구성하기 위해 OfType 쿼리 연산자를 사용 : 나는 구성원으로 각 목록이있는 DTO를 만들어 주겠다고하지만

List<object> allItems; 
var headers allItems.OfType<POHeader>().ToList(); 
var lines = allItems.OfType<POLine>().ToList(); 
... 

whic h는 모든 발신자에게 더 도움이됩니다.

+0

많은 감사합니다 리드 - DTO 접근 방식을 살펴 보겠습니다. –

0

개체를 개체로 캐스트 한 별도의 목록으로 유지 한 다음 대상에서 다시 채울 수도 있습니다. 다음

List<POHeader> ListA; 
List<POLine> ListB; 
List<Vendor> ListC; 
List<Project> ListD; 
... 
List<List<object>> message = new List<List<object>>(){ 
ListA.Cast<object>().ToList(), 
ListB.Cast<object>().ToList(), 
ListC.Cast<object>().ToList(), 
ListD.Cast<object>().ToList() 
}; 

그리고

List<POHeader> ListA = message[0].Cast<POHeader>().ToList(); 
... 
관련 문제