vs2003: WebService: Rückgabe deserialisieren

04/12/2007 - 08:57 von Alberto Luca | Report spam
Hallo NewsGroup,

ich rufe einen WebService auf und bekomme als Rückgabe einen DataSet zurück.
Dieses DataSet làsst sich auch mit DataRow bearbeiten.
Wenn ich jedoch auf das einzelne Feld zugreifen will, muss ich immer
convertieren, da das einzelne Feld vom Typ System.Object ist.

Wie kann ich erreichen, dass ich typisiert auf das einzelne Feld zugreifen
kann, ohne immer zu convertieren?
Hat das mit DeSerialisierung zu tun, wobei ich nicht weiß, wie dies
funktioniert?

Coding:
Dim _intResultTS As DateTime
Dim _strResultWSMethod As String = ""
Dim _intResultReturnCode As Int32 = 0
Dim _strResultReturnMsg As String = ""

Dim _drwResult As DataRow
_drwResult = _ds.Tables("Result").Rows(0) '_ds = Rückgabe-DataSet

_intResultTS = Convert.ToDateTime(_drwResult("TS"))
_strResultWSMethod = Convert.ToString(_drwResult("WSMethod"))
_intResultReturnCode = Convert.ToInt32(_drwResult("ReturnCode"))
_strResultReturnMsg = Convert.ToString(_drwResult("ReturnMsg"))

WebService-Rückgabe:
<DataSet>
<xs:schema id="NewDataSet">
<xs:element name="NewDataSet" msdata:IsDataSet="true"
msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Result" msdata:CaseSensitive="False">
<xs:complexType>
<xs:sequence>
<xs:element name="TS" type="xs:dateTime" minOccurs="0"/>
<xs:element name="WSMethod" type="xs:string" minOccurs="0"/>
<xs:element name="ReturnCode" type="xs:int" minOccurs="0"/>
<xs:element name="ReturnMsg" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram>
<NewDataSet>
<Result diffgr:id="Result1" msdata:rowOrder="0"
diffgr:hasChanges="inserted">
<TS>2007-12-04T08:00:40.7469371+01:00</TS>
<WSMethod>wsiv.GetDsVersionDownload</WSMethod>
<ReturnCode>0</ReturnCode>
</Result>
</NewDataSet>
</diffgr:diffgram>
</DataSet>

Besten Dank vorab!
Ciao, Alberto
 

Lesen sie die antworten

#1 Peter Fleischer
04/12/2007 - 21:25 | Warnen spam
"Alberto Luca" schrieb im Newsbeitrag
news:u%

ich rufe einen WebService auf und bekomme als Rückgabe einen DataSet
zurück.
Dieses DataSet làsst sich auch mit DataRow bearbeiten.
Wenn ich jedoch auf das einzelne Feld zugreifen will, muss ich immer
convertieren, da das einzelne Feld vom Typ System.Object ist.

Wie kann ich erreichen, dass ich typisiert auf das einzelne Feld zugreifen
kann, ohne immer zu convertieren?



Hi Alberto,
der einfachste Weg wàre, den Typ deines DataSets vom Webservice
durchzureichen (XMLInclude) und dann im Client zu instanzieren. Der mit dem
Erstellen des Webverweise generierte Proxy stelt auch das vom Webservice
übergebene Objekt typisiert bereit.

Alternativ kannst du natürlich einen eigene Wrapper bauen, der auf das vom
WebService übergebene DataSet typgerecht zugreifen làsst.

Viele Gruesse

Peter

Ähnliche fragen