• [Serializable] 在C#中的作用 NET 对象序列化(一)


    序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Runtime.Serialization;
    using System.Runtime.Serialization.Formatters.Soap;
    using System.Runtime.Serialization.Formatters.Binary;

    namespace ConsoleApp
    {
        
    public class SerializableTest
        
    {
            
    public void Run()
            
    {
                
    //序列化
                Serialize();
                
                
    //反序列化
                Deserialize();
            }


            
    /// <summary>
            
    /// 序列化
            
    /// </summary>

            private void Serialize()
            
    {
                var obj 
    = new TestSimpleObject();

                obj.Print();

                Stream stream 
    = File.Open("test.xml", FileMode.Create);

                SoapFormatter formatter 
    = new SoapFormatter();
                
    //BinaryFormatter formatter = new BinaryFormatter();

                formatter.Serialize(stream, obj);
                stream.Close();
            }


            
    /// <summary>
            
    /// 反序列化
            
    /// </summary>

            private void Deserialize()
            
    {
                var stream 
    = File.Open("test.xml", FileMode.Open);

                var formatter 
    = new SoapFormatter();
                
    //BinaryFormatter formatter = new BinaryFormatter();

                var obj 
    = (TestSimpleObject)formatter.Deserialize(stream);

                obj.Print();
            }

            
        }


        
    /// <summary>
        
    /// 简单测试对象
        
    /// </summary>

        [Serializable()]
        
    public class TestSimpleObject
        
    {
            
    public string Name getset; }

            
    public int Age getset; }

            
    public TestSimpleObject()
            
    {
                Name 
    = "abeen";
                Age 
    = 26;
            }


            
    public void Print()
            
    {
                Console.WriteLine(
    string.Format("{0} age is {1}",Name,Age));
            }

        }

    }



    text.xml内容 

    <SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Body>
    <a1:TestSimpleObject id="ref-1" xmlns:a1="http://schemas.microsoft.com/clr/nsassem/ConsoleApp/ConsoleApp%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Dnull">
    <_x003C_Name_x003E_k__BackingField id="ref-3">abeen</_x003C_Name_x003E_k__BackingField>
    <_x003C_Age_x003E_k__BackingField>26</_x003C_Age_x003E_k__BackingField>
    </a1:TestSimpleObject>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>


  • 相关阅读:
    算法
    Unity-UI
    lua-设计与实现 1类型
    Unity-Cache Server
    lua-高效编程-总结
    算法-JPS寻路设计思想
    数据结构- List、Dictionary
    数据结构-二叉树、堆
    VSCode更好用
    功能快捷键
  • 原文地址:https://www.cnblogs.com/abeen/p/1351901.html
Copyright © 2020-2023  润新知