클라이언트는 서비스를 실행하는 데 필요한 매우 오래된 .net 1.1 앱이 있습니다. 나는 서비스를 히트하는 4.0에서 중간 부분을 만들었고 데이터를 반환하려고 시도하고있다. 내가 만든 클래스는 generic리스트에 접근 할 수 없기 때문에 ArrayList를 사용한다. 클라이언트가 내 코드를 사용할 때 ArtayLists는 ArrayOfAnyType으로 나오고 각각 Sub New()로 초기화 했음에도 불구하고 CLIENT 측에서 초기화해야합니다. 클라이언트가 모든 arraylist를 초기화해야하는 것을 원하지 않습니다. 눈에 띄는 코드는 다음과 같습니다.ArrayList가 웹 서비스에서 초기화되지 않는 이유는 무엇입니까?
<Serializable()> _
Public Class XApplication
Public Sub New()
_People = New ArrayList
_PhysicalHouseholds = New ArrayList
_TaxReturns = New ArrayList
End Sub
Public Property People() As ArrayList
Public Property PhysicalHouseholds() As ArrayList
Public Property TaxReturns() As ArrayList
End Class
XmlInclude 특성을 사용하여 클래스 형식을 정의하려고 시도했지만 효과가 없습니다. 분명히하려면 WCF를 사용할 수 없습니다. 웹 서비스를 사용해야합니다.
나는 스튜어트에게 감사 드린다. 그러나 나는 혼란 스럽다. 전에 ArrayList를 한번도 넘지는 않았지만, Class를 Object로 통과 시켰고 같은 문제를 일으켰지 만 그렇지 않은 것 같습니다. –
Apols -이 사실을 제대로 이해하지 못했을 수 있습니다. (.Net 4,하지만 @WebService를 사용하여) 서비스를 게시하고이를 1.1 웹 참조로 사용하고 마법사에서 프록시 클래스를 생성하도록 남겨두고 있는지 확인할 수 있습니까? 유형을 공유하지 않는다면 대개 서버에서 사용하는 기술은 중요하지 않습니다. 클라이언트는 WSDL에서 자체 프록시를 생성합니다. 'List'을 서버에 공개 할 수도 있습니다. 1.1 클라이언트는 데이터를 비 직렬화 할 사용자 정의 클래스 (미친 이름 임에도 불구하고)를 생성해야합니다. –
StuartLC
당신이 묘사 한 것이 맞습니다. 방금 돌아가서 웹 서비스를 통해 클래스를 보내는 오래된 코드를 확인했습니다. 이 클래스에는 클래스 인 속성이 있습니다. 하위 새에서는 해당 클래스를 초기화합니다. 내가 (코드 소비) 다른 쪽 끝에서 얻을 때 나는 최상위 수준 클래스를 instaniate 필요합니다. 클래스 인 모든 속성을 초기화 할 필요는 없습니다. 차이점은 클래스이고 arraylists는 아니지만 여전히 코드를 인스턴스화 할 필요가 없습니다. –