Kan jy dwing die serialisasie van 'n enum waarde in 'n heelgetal? [dupliseer]
-
02-07-2019 - |
Vra
Moontlike Dubbele:
Hoe kan ek afleveringen n enum waarde as 'n int?
Hi, almal!
Ek wonder of daar 'n manier om die serialisasie van 'n enum waarde dwing om in sy heelgetal waarde, in plaas van sy string verteenwoordiging.
Om jou in konteks te plaas: Ons gebruik, in 'n web-program, wat swaar op web dienste, 'n enkele baseclass vir al ons versoek kop, onafhanklik van die tipe versoek.
Ek wil gevolg veld om die kop te voeg, sodat ons 'n plek om wenke terug na die roeping app slaag ten opsigte van hoe die operasie gegaan op die web diens kant het. Ons het reeds 'n enum te dien effekte verklaar, maar omdat ons nalatenskap programme wat 'n beroep op diegene web dienste wat nie kan weet oor die enums, wil ek graag afleveringen daardie waardes as heelgetalle te stuur.
Ons het reeds moes kap op die lengte van die kop deur die gebruik van die [XmlElement (ElementName = "string representationOfAttributeName")] omdat ons soms oorskry IE maksimum url lengte, en ek het gewonder of daar is 'n soortgelyke eienskappe te dwing die serialisasie van enum waardes in heelgetalle.
Enigiemand ooit gehoor van so 'n kenmerk?
As ooit, dankie vir die hulp, Pascal
Oplossing
Enums doen afleveringen om SY. Maar oor die algemeen, as jy nie hou van die manier waarop een van jou eiendom kry serialized om XML, jy kan net dit te doen:
[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; }
}
Ander wenke
Enums NIE afleveringen as int as verstek. Ek gebruik XMLSerializer om 'n klas afleveringen en ek het dieselfde probleem as beskryf.
(Die voorbeeld van Matt Howells blyk te werk as jy die omvang van MyThingForSerialization verander publiek nie, maar ek wil graag 'n beter implementering oorsaak sien dit skep 1 ekstra openbare eiendom)