代码:

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. 用L脚本语言实现&quot;L脚本语言控制台&quot;

    下载Windows平台解释引擎 L脚本语言中能够将随意字符串当做一行L脚本语言程序来运行.通过循环接收用户输入,就是一个控制台IDE了 #scp #scp没有控制台IDE?我们自己用scp来实现一个 ...

  2. C#(wpf)迷你词典

    本周利用空余时间做的一个单词查询软件(C#(Wpf)-WebService),目前只支持中英文查词,同义词.例句.发音. 未激活状态 WebService:http://fy.webxml.com.c ...

  3. Jquery 应用积累

    1.控制div显隐 $("#id").show()表示display:block, $("#id").hide()表示display:none; $(" ...

  4. berkelydb学习

    http://www.oracle.com/technetwork/cn/java/seltzer-berkeleydb-sql-085418-zhs.html 官网中文学习网址

  5. 【oracle】dblink创建

    目的:oracle中跨数据库查询 两台数据库服务器db_A(本地)和db_B(远程192.168.1.100),db_A下用户user_a 需要访问到db_B下user_b的数据 解决:查询得知使用d ...

  6. wepy - 与原生有什么不同(watcher监听器.)

    <style> </style> <template> <view>监听值:{{num}}</view> </template> ...

  7. TP框架中APP_SUB_DOMAIN_DEPLOY什么意思?

    'APP_SUB_DOMAIN_DEPLOY' => false, // 是否开启子域名部署 thinkphp开启域名部署/子域名部署/泛域名部署/IP访问部署            Think ...

  8. Javascript获取当月的天数

    var d = new Date(); var curMonthDays = new Date(d.getFullYear(), (d.getMonth() + 1), 0).getDate(); a ...

  9. centos7 开启ftp服务

    1.关闭默认防火墙 systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewa ...

  10. js图片加载效果(延迟加载+瀑布流加载)

    概述 两种图片加载的效果:一种是遇到图片较多时,带读条效果的加载提示:另一种是根据滑块的位置进行预加载,用户不察觉的情况下,实现瀑布流的加载效果 详细 代码下载:http://www.demodash ...