zoukankan      html  css  js  c++  java
  • 序列化和反序列化

    代码:

    internal static class Class1
    {
        private static readonly string XML_FOLDER = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
            "CompanyName", "ProjectName");
        private static readonly string XML_FILE = Path.Combine(XML_FOLDER, "config.xml");
    
        static Class1()
        {
            if (!Directory.Exists(XML_FOLDER))
            {
                Directory.CreateDirectory(XML_FOLDER);
            }
        }
    
        internal static T Deserialize<T>()
        {
            return (T)new XmlSerializer(typeof(T)).Deserialize(new FileStream(XML_FILE, FileMode.OpenOrCreate, FileAccess.ReadWrite));
        }
        internal static void Serialize(this object obj)
        {
            new XmlSerializer(obj.GetType()).Serialize(new FileStream(XML_FILE, FileMode.Create, FileAccess.ReadWrite), obj);
        }
    }

    用法:

    new List<string> { "asd", "dfd" }.Serialize();
    var a = Class1.Deserialize<List<string>>();
    internal static class Class3
    {
        private static readonly string XML_FOLDER = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
            "CompanyName", "ProjectName");
        private static readonly string XML_FILE = Path.Combine(XML_FOLDER, "config.xml");
    
        static Class3()
        {
            if (!Directory.Exists(XML_FOLDER))
            {
                Directory.CreateDirectory(XML_FOLDER);
            }
        }
    
        internal static T Deserialize<T>()
        {
            using (var stream = new FileStream(XML_FILE, FileMode.OpenOrCreate, FileAccess.ReadWrite))
            {
                return (T)new XmlSerializer(typeof(T)).Deserialize(stream);
            }
        }
        internal static void Serialize(this object obj)
        {
            using (var stream = new FileStream(XML_FILE, FileMode.Create, FileAccess.ReadWrite))
            {
                new XmlSerializer(obj.GetType()).Serialize(stream, obj);
            }
        }
    }
  • 相关阅读:
    Testng Retry失败用例重新运行的方法(二)
    Testng Retry失败用例重新运行的方法(一)
    接口测试用例设计
    java 打印栈信息
    java 远程调试
    Java 字符串操作
    python中if __name__ == '__main__': 的解析
    Python OS模块介绍
    MAP/CAP信令常见消息
    Perl 获取当前系统时间
  • 原文地址:https://www.cnblogs.com/yao2yao4/p/3203132.html
Copyright © 2011-2022 走看看