Können Sie die Serialisierung eines ENUM-Wert in eine ganze Zahl erzwingen? [Duplikat]
-
02-07-2019 - |
Frage
Mögliche Duplizieren:
Wie serialisieren ich einen Enum-Wert als int / a>
Hallo, alle!
Ich frage mich, ob es einen Weg, um die Serialisierung eines ENUM-Wert in ihren ganzzahligen Wert zu zwingen, statt dessen String-Darstellung.
Um Sie in einen Kontext zu setzen: Wir verwenden, in einer Web-Anwendung, die auf Web-Services, eine einzige Basisklasse für alle unsere Anfrage-Header, unabhängig voneinander von der Art der Anfrage stark abhängig ist.
Ich möchte ein Ergebnisfeld an den Header hinzuzufügen, so dass wir einen Platz haben, um Hinweise an die aufrufende Anwendung übergeben, wie der Betrieb auf der Web-Service-Seite ging. Wir haben bereits eine ENUM in diesem Sinne erklärt, aber da wir Legacy-Anwendungen, die auf diesen Web-Services aufrufen, die nicht über diese Aufzählungen wissen kann, würde Ich mag serialize als ganze Zahlen, diese Werte senden.
Wir haben bereits über die Länge dieser Header zu fällen haben mit der Tasten [XmlElement (Elementname = „string representationOfAttributeName“)], weil wir gelegentlich IE maximalen URL-Länge überschritten, und ich fragte mich, ob es ein ähnliches Attribut zu zwingen die Serialisierung von enum-Wert in ganzen Zahlen.
Wer jemals von einem solchen Attribut gehört?
Wie immer, vielen Dank für die Hilfe, Pascal
Lösung
Aufzählungen zu Ints serialisieren. Aber in der Regel, wenn Sie den Weg nicht wie eine Ihrer Eigenschaften in XML serialisiert wird, können Sie dies nur tun:
[XmlIgnore]
public MyThing MyThing { get; set; }
[XmlElement("MyThing")]
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
public string MyThingForSerialization
{
get { return //convert MyThing to string; }
set { MyThing = //convert string to MyThing; }
}
Andere Tipps
Aufzählungen serialisieren NICHT als int als Standard. Ich verwende XMLSerializer eine Klasse serialisiert werden, und ich habe das gleiche Problem wie beschrieben.
(Das Beispiel von Matt Howells scheint zu funktionieren, wenn Sie den Umfang MyThingForSerialization zu öffentlichen ändern, aber ich möchte eine bessere Umsetzung Ursache sehen, dies schafft ein zusätzliches öffentliches Eigentum)