PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C# Webservice: geeigneter Rückgabedatentyp


hadez16
2012-01-09, 08:17:40
Hallo,

ich möchte in einem C# Webservice (asmx) eine gewisse Struktur zurückliefern, ich weiß aber erst zur Laufzeit welche Namen die (XML-)Attribute haben werden.

Mein Wissen umfasst schon folgendes:

- nicht alle Datentypen können von Haus aus für die Rückgabe via Webservice serialisiert werden

- als Serializable markierte Klassen liefern ihre deklarierten properties zurück

- structs und String-Arrays kann ich mir zurückliefern lassen

- Dictionaries leider Gottes nicht

Die möglichen Rückgabetypen haben alle gemeinsam, dass ich die Anzahl und die Namen der Variablen/Attribute schon im Voraus deklarieren muss, sodass als Rückgabe sowas wie das herauskommt:


<MeineRueckgabe>
<Attribut1>Wert1</Attribut1>
<Attribut2>Wert2</Attribut2>
</MeineRueckgabe>

Eigentlich weill ich die Attributnamen aber erst zur Laufzeit benennen bzw auch eine dynamische Anzahl von Attributen haben.

Für mich wäre ein Dictionary an dieser Stelle das wohl sinnvollste wenn ich mir vorstelle, dass der erste String der Attributname ist und der zweite String der Wert. Aber das klappt so nicht.

Kann mir jemand helfen bei meinem Vorhaben?

Vielen Dank!

Drexel
2012-01-09, 18:54:52
Aus XML und Serialisierungssicht hilft Dir da nur eine generischere XML/Klassenstruktur.

In XML so:


<MeineRueckgabe>
<attributes>
<Attribute name="Attribut1">Wert1</Attribute>
<Attribute name="Attribut2">Wert2</Attribute>
</attributes>
</MeineRueckgabe>

Oder

<MeineRueckgabe>
<attributes>
<Attribute><name>Attribut1</name><Value>Wert1</Value></Attribute>
<Attribute><name>Attribut2</name><Value>Wert2</Value></Attribute>
</attributes>
</MeineRueckgabe>


Asmx Webservices habe ich nicht parat, sollte so aber irgendwie zu lösen sein, wie das damit umzusetzen ist kann ich dir leider nicht sagen. Kann Dir nur den Tip geben niemals etwas in XML zu verwenden, was Du nicht in XSD ausdrücken kannst, das vereinfacht die autom. Verarbeitung erheblich.

hadez16
2012-01-15, 11:35:25
habe es nun so gelöst, dass ich mein Dictionary fülle und dessen Inhalt in ein Array von simplen Key-Value-Klassen pumpe. Das genügt :-)