代码:

using System;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization; namespace Hont
{
[XmlRoot("SerizlizableMultipleValueEnum"), Serializable]
public class SerizlizableMultipleValueEnum<TEnum> : IXmlSerializable
where TEnum : IConvertible
{
TEnum mEnumValue; public TEnum EnumValue { get { return mEnumValue; } } public SerizlizableMultipleValueEnum()
{
} public SerizlizableMultipleValueEnum(TEnum enumValue)
{
this.mEnumValue = enumValue;
} #region IXmlSerializable Members public XmlSchema GetSchema()
{
return null;
} public void ReadXml(XmlReader reader)
{
var typeSer = new XmlSerializer(typeof(int)); bool wasEmpty = 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 void WriteXml(XmlWriter writer)
{
var typeSer = new XmlSerializer(typeof(int)); writer.WriteStartElement("EnumValue");
typeSer.Serialize(writer, Convert.ToInt32(mEnumValue));
writer.WriteEndElement();
} #endregion
}
}

使用:

mTestValue = new SerizlizableMultipleValueEnum<MyEnum>(MyEnum.Value1 | MyEnum.Value2);
var str = XmlSerializationHelper.SerializationToString(mTestValue); Console.WriteLine(str); mTestValue = XmlSerializationHelper.DeSerializationFromString<SerizlizableMultipleValueEnum<MyEnum>>(str);
Console.WriteLine(mTestValue.EnumValue);
//print 6.(value1 is 2, value2 is 4)

其他扩展:

可序列化接口:http://www.cnblogs.com/hont/p/4162448.html

序列化助手类:http://www.cnblogs.com/hont/p/3959854.html

C# xml可序列化多值枚举脚本的更多相关文章

  1. windows phone8.1:Xml,Json序列化和反序列化

    原文:windows phone8.1:Xml,Json序列化和反序列化 小梦本例主要实现以下四点内容: 将Car对象序列化为xml 将Car对象序列化为Json 将xml反序列化为Car对象 将js ...

  2. (转)C# Xml进行序列化与反序列化

    ---------------------------------------------------------------文章1---------------------------------- ...

  3. 生成xml文件的步骤 -- XML的序列化器

    1. 初始化一个xml的序列化器 XmlSerializer serializer = Xml.newSerializer(); 2. 设置序列化器的参数 serializer.setOutput(o ...

  4. xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西。xml里面的结构和数据库不一致..................

    xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西.xml里面的结构和数据库不一致..................

  5. VB 老旧版本维护系列---读取xml某个节点的值

    读取xml某个节点的值 '定义xml字符串内容地址 Dim xmlFileStr As String = "" '定义所需读取节点的名称 Dim readNodeName As S ...

  6. Sqlserver更新数据表xml类型字段内容某个节点值的脚本

    GO USE [JC2010_MAIN_DB] 1.新建备份表JobObjectVersion_JCSchemVersion_BCK) GO IF EXISTS (SELECT * FROM sys. ...

  7. C#里XML(JSON)序列化时,自动隐藏值为Null的成员的输出

    从StackOverflow里找到的答案.发现对最新的Newtownsoft的JSON序列化也同样适用. https://stackoverflow.com/questions/5818513/xml ...

  8. 【私人定制jackson】定制jackson的自定义序列化(null值的处理)

    最近用springMVC做服务端的http+json的接口,出现一个不是特别容易解决的问题: 在对List类型的值进行处理时,有一部分服务是有做一些逻辑判断的,在逻辑判断不通过的时候会返回一个null ...

  9. WebServices中Xml的序列化

    一.定义序列化实体类 [System.Xml.Serialization.XmlRoot("Custome_Xml_Root_Name")] //自定义生成的Xml根目录名称 pu ...

随机推荐

  1. HTML5游戏,五子棋

    在线演示 本地下载 最近html5的游戏还真是不少,这种在线游戏既简单又有趣.收藏几个在午休时间娱乐一下.何乐而不为呢?喜欢研究的可以下载代码看看.超级推荐!

  2. poj1837--Balance(dp:天平问题)

    Balance Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10773   Accepted: 6685 Descript ...

  3. 把thinkphp项目拷贝到其他电脑上报错

    提示 include(***\ThinkPHP\Library/Think/Log.class.php): failed to open stream 把Application\Runtime文件夹里 ...

  4. cp 命令(转)

    原文:http://www.cnblogs.com/peida/archive/2012/10/29/2744185.html cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情 ...

  5. filezilla

    中文网站:https://www.filezilla.cn/ 英文网站:https://filezilla-project.org/ FileZilla 客户端是一个快速可靠的.跨平台的FTP,FTP ...

  6. 重置outlook 2010

    1.进入 D:\program files\mirosoft office\ioffice14 2.outlook /importprf .\.prf 3.账号问题可以-->控制面板--> ...

  7. js-知识集锦

      CreateTime--2016年9月22日14:37:51Author:Marydonjs小知识点集锦1. JSON.stringify(Obj);//将Object对象转换成json格式的st ...

  8. svn,git,scp,rsync,rake,ssh,wget,axel,aria2,nohup,grep,tail,siege,mitmproxy,ulimit,netstat,lsof

    scp 把本地文件上传到server上 scp -P 1234 config/cert/dev/client.pem dev@xx.xxx.xxx:/srv/rorapps/fgcc/config/c ...

  9. TRIZ系列-创新原理-25-自服务原理

    自服务原理的详细表述例如以下:1)物体在实施辅助和维修操作时.必须能自我服务:2)利用废弃的材料和能量: 自服务原理的第1)个比較好理解,假设一个系统在执行过程中须要进行辅助和维护操作时,最好不要借助 ...

  10. hihoCoder 1014 Trie树 (Trie)

    #1014 : Trie树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 小Hi和小Ho是一对好朋友.出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮 ...