zoukankan      html  css  js  c++  java
  • C# xml可序列化多值枚举脚本

    代码:

    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
        }
    }
    View Code

    使用:

    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

  • 相关阅读:
    Redis原理篇
    Redis基础
    CentOS7 Redis5.0.5环境搭建
    通用后台管理系统(10)项目打包、修改配置文件、项目开源地址
    通用后台管理系统(9)-编写首页接口、实现、控制器
    通用后台管理系统(8)-编写登入控制器
    生成常用的msf
    badusb资料收集
    后渗透之meterpreter攻略
    linux命令备忘录
  • 原文地址:https://www.cnblogs.com/hont/p/5195733.html
Copyright © 2011-2022 走看看