• 序列化和反序列化


    代码:

    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);
            }
        }
    }
  • 相关阅读:
    iOS开发数据库篇—SQLite简单介绍
    iOS FMDatabase 本地数据库的创建和几个基本使用方法
    iOS开发-CoreMotion框架
    ios中陀螺仪CoreMotion的用法
    iOS摄像头和相册-UIImagePickerController-浅析
    iOS使用AVCaptureSession自定义相机
    在iOS上实现一个简单的日历控件
    iOS开发UI篇—Button基础
    在Virt-manager中使用snapshot功能
    Node.js学习
  • 原文地址:https://www.cnblogs.com/yao2yao4/p/3203132.html
Copyright © 2020-2023  润新知