[netMarketing类库] Serialize类: 以序列化方式保存程序配置文件的类,可被继承

命名空间:sharClass.Serialize

功能: 以序列化方式保存程序配置文件的类,可被继承。

版本要求: netMarketingv1.3.2及以上

功能详细说明:

 以序列化方式保存程序配置文件的类,可被继承。


常用函数列表:

//构造函数,传入配置文件名(带路径) 
public Serialize(string filePath)
/// 将对象序列化,要序列化的对象需要事先加标签[Serializable]
 public static void FileSerialize(string FilePath, object obj)
/// 将文件反序列化,要序列化的对象需要事先加标签[Serializable]
public static object FileDeSerialize(string FilePath)
public static string SerializeColor(Color color)
public static Color DeserializeColor(string color)
public static XmlFont SerializeFont(Font font)
public static Font DeserializeFont(XmlFont font)
public virtual Serialize Load(string filePath)
public virtual T Load<T>(string filePath) where T : Serialize
public virtual T Load<T>() where T : Serialize
public virtual T ReadFrom<T>(string filePath) where T : Serialize
//载入配置
public virtual object Load()
//保存配置
public virtual object Save()
public virtual object Save(string filePath)


参考例子:

首先,创建一个类,继承Serialize。

这个类里面可以写上你要保存的变量,也可以是字段,如果愿意,也可以带有方法。

注意:你可能觉得无参构造函数Serialize_test是没有必要的,但是没有它则无法序列化!

using sharClass;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace demo
{
    public class Serialize_test: Serialize
    {
        public Serialize_test()
        {

        }

        public Serialize_test(string name):base(name)
        {

        }

        public string msg1 = "这是测试变量msg1";


        [Category("Product设置"), DisplayName("01_数据存储目录"), Description("即存放的目录位置")]
        [DefaultValue("E:\\Data"), Editor(typeof(System.Windows.Forms.Design.FolderNameEditor), typeof(System.Drawing.Design.UITypeEditor))]
        public string Product_DataFolder { get; set; }

        [Category("Product设置"), DisplayName("厚度上限"), Description("厚度上限")]
        [DefaultValue(0.15)]
        public double Product_Limit_ThicknessMax { get; set; }

        [Category("Product设置"), DisplayName("厚度下限"), Description("厚度下限")]
        [DefaultValue(0.05)]
        public double Product_Limit_ThicknessMin { get; set; }
    }
}

接下来,如果使用这引类的Save, Load方法就可以存取变量内容了。

你也可以把这个类绑定给propertyGrid控件,以方便修改变量内容。

 Serialize_test SerializeConfig = new Serialize_test("d:\\SerializeConfig");

        private void button6_Click(object sender, EventArgs e)
        {
            SerializeConfig=(Serialize_test) SerializeConfig.Load();
            MessageBox.Show(SerializeConfig.msg1);
            propertyGrid2.SelectedObject = SerializeConfig;
            propertyGrid2.CollapseAllGridItems();
        }

        private void button7_Click(object sender, EventArgs e)
        {
            SerializeConfig.Save();
        }


见下图:

image.png

另个,这个类的两个静态方法,FileSerialize,FileDeSerialize。

FileSerialize可以用来序列化保存添加了 [Serializable]标签的对象,FileDeSerialize则读取硬盘文件上的这个对象。

请参考下面的例子,其中我们要保存的对象是fsp,它是一个结构体FormSizeandLocation的实例对象。

下面例子演示了这个fsp对象的读写。

  [Serializable]
        public struct FormSizeandLocation
        {
            public int SizeW;
            public int SizeH;
            public int LocationX;
            public int LocationY;
            public int Style;
        }

       //序列化
        private FormSizeandLocation fsp = new FormSizeandLocation();
 public void FormcloseEvent(object sender, EventArgs e)
        {
            if (!(sender is Form)) return;
            try
            {
                Form form = (Form)sender;
                switch (form.WindowState)
                {
                    case FormWindowState.Maximized:
                        fsp.Style = 2;

                        fsp.SizeW = form.Width;
                        fsp.SizeH = form.Height;
                        fsp.LocationX = form.Location.X;
                        fsp.LocationY = form.Location.Y;
                        break;
                    case FormWindowState.Minimized:
                        fsp.Style = 1;
                        break;
                    case FormWindowState.Normal:
                        fsp.Style = 0;

                        fsp.SizeW = form.Width;
                        fsp.SizeH = form.Height;
                        fsp.LocationX = form.Location.X;
                        fsp.LocationY = form.Location.Y;
                        break;
                }
                Serialize.FileSerialize(AppDomain.CurrentDomain.BaseDirectory + form.Name + "_Location.set", fsp);
            }
            catch (Exception ex)
            {

            }
        }

  //反序列化
  public void FormloadEvent(object sender, EventArgs e)
        {
            if (!(sender is Form)) return;
            Form form = (Form)sender;
            try
            {
                object result = Serialize.FileDeSerialize(AppDomain.CurrentDomain.BaseDirectory + form.Name + "_Location.set");
                if (result != null)
                {
                    fsp = (FormSizeandLocation)result;
                    switch (fsp.Style)
                    {
                        case 2:
                            form.WindowState = FormWindowState.Maximized;
                            break;
                        default:
                            form.WindowState = FormWindowState.Normal;
                            break;
                    }
                    form.Left = fsp.LocationX;
                    form.Top = fsp.LocationY;
                    form.Size = new Size(fsp.SizeW, fsp.SizeH);

                }
            }
            catch
            {

            }
        }



--------------------- 

作者:hackpig
来源:
www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

返回类库功能说明目录


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864