WCF가 List 대신 myObject []를 반환하는 이유 내가 기대했던 것처럼?
내 WCF 메서드에서 목록을 반환하고 있습니다. 내 클라이언트 코드에서 반환 유형은 MyObject []로 표시됩니다. MyObject [], IList 또는 IEnumerable을 사용해야합니다.
WCFClient myClient = new WCFClient();
MyObject[] list = myClient.GetMyStuff();
or
IList<MyObject> list = myClient.GetMyStuff();
or
IEnumerable<MyObject> list = myClient.GetMyStuff();
내가하는 일은이 컬렉션을 그리드에 묶는 것뿐입니다. 반환 된 컬렉션을 할당하는 가장 좋은 개체는 무엇입니까?
참조를 추가 할 때 고급 버튼을 클릭하여 어레이 대신 일반 목록을 사용하도록 지정하거나 서비스 참조를 마우스 오른쪽 단추로 클릭하고 구성을 선택하여 제자리에서 변경할 수 있습니다.
그 이유는 WCF가 일반 목록을 유선을 통해 보낼 배열로 직렬화하기 때문입니다. 구성은 svcutil에 사용자의 편의를 위해 일반 목록으로 다시 변환하는 프록시를 만들도록 지시하는 것입니다.
를 사용 svcutil.exe
하여 클라이언트 코드를 만들 때 사용할 수없는 특정 참조를 해결하는 방법을 알려야합니다.
다음과 같이 할 수 있습니다 List<T>
.
svcutil /o:YourService.cs /ct:System.Collections.Generic.List`1 http://example.com/mex
Stever B가 맞습니다. WCF는 .NET에 연결되지 않기 위해 정말 열심히 노력합니다. Java 클라이언트가 구성 요소에 연결하도록 허용 할 수 있습니다. 어레이는 상호 운용이 가능합니다. 일반 .NET 목록은 그렇지 않습니다.
그러나 배열을 List 또는 원하는 다른 것으로 다시 변환하는 자체 프록시 클래스를 만드는 것은 환영합니다. 자신의 프록시를 수동으로 생성하는 것의 좋은 점은 그들이하는 일을 완전히 제어 할 수 있다는 것입니다.
클라이언트 프로젝트에 서비스 참조를 추가 할 때 고급 버튼을 클릭하고 컬렉션 유형을 배열에서 원하는 것으로 변경합니다.
'Development Tip' 카테고리의 다른 글
NodeJs : TypeError : require (…)는 함수가 아닙니다. (0) | 2020.11.24 |
---|---|
Kotlin : withContext () 대 Async-await (0) | 2020.11.24 |
hashCode ()가 재정의되지 않은 경우 객체의 해시 코드는 무엇입니까? (0) | 2020.11.24 |
C ++에 대한 까다로운 인터뷰 주제 (0) | 2020.11.24 |
정수 열의 auto_increment가 데이터베이스의 max_value에 도달하면 어떻게됩니까? (0) | 2020.11.24 |