C#序列化和反序列化

  1. XML序列化需要引用名称空间System.Xml.Serialization,序列化代码如下:

     public static void Serialize<T>(T o, string filePath)

            {

                try

                {

                    XmlSerializer formatter = new XmlSerializer(typeof(T));

                    StreamWriter sw = new StreamWriter(filePath, false);

                    formatter.Serialize(sw, o);

                    sw.Flush();

                    sw.Close();

                }

                catch (Exception) { }

            }

  2. 2

    XML反序列化,代码如下:

     public static T DeSerialize<T>(string filePath)

            {

                try

                {

                    XmlSerializer formatter = new XmlSerializer(typeof(T));

                    StreamReader sr = new StreamReader(filePath);

                    T o = (T)formatter.Deserialize(sr);

                    sr.Close();

                    return o;

                }

                catch (Exception)

                {

                }

                return default(T);

            }

    END

Soap序列化

  1. 1

    Soap序列化需要名称引用空间System.Runtime.Serialization.Formatters.Soap,并且该dll引用需要手工添加。Soap序列化代码,如下:

     public static void Serialize<T>(T o, string filePath)

            {

                try

                {

                    SoapFormatter formatter = new SoapFormatter();

                   // StreamWriter sw = new StreamWriter(filePath, false);

                    Stream stream = new FileStream(filePath , FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);

                    formatter.Serialize(stream, o);

                    stream.Flush();

                    stream.Close();

                }

                catch (Exception) { }

            }

  2. 2

    Soap反序列化,代码如下:

    public static T DeSerialize<T>(string filePath)

            {

                try

                {

                    SoapFormatter formatter = new SoapFormatter();

                   // StreamReader sr = new StreamReader(filePath);

                    Stream destream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);

                    T o = (T)formatter.Deserialize(destream);

                    destream.Flush();

                    destream.Close();

                    return o;

                }

                catch (Exception)

                {

                }

                return default(T);

            }

    END

Binary序列化和反序列化

  1. 1

    Binary序列化,代码:

    public static void Serialize<T>(T o, string filePath)

            {

                try

                {

                    BinaryFormatter formatter = new BinaryFormatter();

                    Stream stream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);

                    formatter.Serialize(stream, o);

                    stream.Flush();

                    stream.Close();

                }

                catch (Exception) { }

            }

  2. 2

    Binary反序列化,代码:

     public static T DeSerialize<T>(string filePath)

            {

                try

                {

                    BinaryFormatter formatter = new BinaryFormatter();

                    Stream destream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);

                    T o = (T)formatter.Deserialize(destream);

                    destream.Flush();

                    destream.Close();

                    return o;

                }

                catch (Exception)

                {

                }

                return default(T);

            }

    END

测试

  1. 在Test项目中的MainForm窗体中添加两个Button控件,分别命名为“序列化”和“反序列化”,并添加代码:

      public partial class MainForm : Form

        {

            public MainForm()

            {

                InitializeComponent();

            }

            private void button1_Click(object sender, EventArgs e)

            {

                string str = "Hello world!!!";

                KTools.Serializer.XMLSerializer.Serialize<string>(str, "1.txt");

                MessageBox.Show("序列化完毕");

            }

            private void button2_Click(object sender, EventArgs e)

            {

                string str = KTools.Serializer.XMLSerializer.DeSerialize<string>("1.txt");

                MessageBox.Show(str);

            }

        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值