Ich verwende Visual Studio 2010 und habe einen Serviceverweis auf einen von uns erstellten Webdienst. Unsere Methoden geben Objekte zurück, die generische Listeneigenschaften enthalten:
%Vor%Auf der Clientseite wird eine References.cs-Datei mit int [] anstelle von List:
erstellt %Vor%In den Einstellungen für den Dienstverweis ist der Sammlertyp so eingestellt, dass er "Liste" und nicht "Arrays" verwendet. Trotzdem macht es das immer noch.
Jede Information darüber, wie man das lösen könnte, wäre extrem hilfreich, es scheint keinen Sinn zu ergeben.
Haben Sie eine "Service Reference" oder eine "Web Reference" hinzugefügt? Es scheint, dass der Proxy mit dem XmlSerializer anstelle von DataContractSerializer generiert wurde. Wenn der DataContractSerializer verwendet wurde, hätten Sie System.Runtime.Serialization ... Attribute anstelle der Xml.Serialization ... -Attribute. Wie genau haben Sie diese Webreferenz generiert? Der aktualisierte XmlSerializer konvertiert alle Auflistungen in Arrays, wobei der Datacontract-Serializer weiß, wie .Net DataTypes generiert werden. Add Web Reference verwendet den XmlSerializer BTW.
Ich bin auch neugierig auf Ihre Verwendung von MessageBodyMember. Warum versuchen Sie, Ihre eigenen MessageContracts zu generieren? Das Problem mit MessageContracts kann sehr gefährlich sein, besonders wenn Sie nicht genau wissen, was Sie tun.
Versuchen Sie stattdessen Folgendes:
%Vor%Sehen Sie, wie das für Sie funktioniert und lassen Sie es uns wissen.
In der Servicereferenz können Sie auswählen, welcher Typ für Collections verwendet werden soll. Aus irgendeinem Grund ist Array Standard. Nachdem ich es geändert habe, musste ich die gesamte Referenz löschen und neu hinzufügen, indem ich Liste von Anfang an wählte. Ich hatte seltsame Probleme, es nach der Tat zu ändern.
Tags und Links c# web-services