Code:
usingSystem;usingSystem.Collections.Generic;usingSystem.Xml;usingSystem.Xml.Schema;usingSystem.Xml.Serialization;namespacehont{[XmlRoot ("Serizlizablemultiplevalueenum"), Serializable] Public classSerizlizablemultiplevalueenum<tenum>: IXmlSerializablewheretenum:iconvertible {tenum menumvalue; PublicTenum Enumvalue {Get{returnMenumvalue;} } PublicSerizlizablemultiplevalueenum () {} Publicserizlizablemultiplevalueenum (Tenum enumvalue) { This. Menumvalue =Enumvalue; } #regionIXmlSerializable Members PublicXmlSchema GetSchema () {return NULL; } Public voidReadXml (XmlReader reader) {varTypeser =NewXmlSerializer (typeof(int)); BOOLWasempty =Reader. Isemptyelement; Reader. Read (); if(Wasempty)return; while(Reader. NodeType! =xmlnodetype.endelement) {reader. Readstartelement ("Enumvalue"); Menumvalue=(Tenum) typeser.deserialize (reader); Reader. Readendelement (); Reader. MoveToContent (); } reader. Readendelement (); } Public voidWriteXml (XmlWriter writer) {varTypeser =NewXmlSerializer (typeof(int)); Writer. WriteStartElement ("Enumvalue"); Typeser.serialize (writer, Convert.ToInt32 (Menumvalue)); Writer. WriteEndElement (); } #endregion }}View Code
Use:
New Serizlizablemultiplevalueenum<myenum> (myenum.value1 | myenum.value2); var str == Xmlserializationhelper.deserializationfromstring<serizlizablemultiplevalueenum <MyEnum>>(str); Console.WriteLine (mtestvalue.enumvalue); // Print 6. (Value1 is 2, value2 is 4)
Other extensions:
Serializable interface: http://www.cnblogs.com/hont/p/4162448.html
Serialization Helper class: Http://www.cnblogs.com/hont/p/3959854.html
C # XML serializable multi-value enumeration