现在的位置: 首页 > 综合 > 正文

C# 序列化和反序列化

2018年06月07日 ⁄ 综合 ⁄ 共 1618字 ⁄ 字号 评论关闭

using UnityEngine;
using System.Collections;
using System;
using System.Runtime.Serialization;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
public class Employee{
public int Empld=100;
public string name="陈哲";
[NonSerialized]
public string NoSerializable="No-Serializable";
public Employee(){

}
    
/*public Employee(SerializationInfo info,StreamingContext ctxt){
        Empld = (int)info.GetValue("EmId",typeof(int));
        name = (string)info.GetValue("EmName",typeof(string));
}

    public void GetObjectData(SerializationInfo info, StreamingContext ctxt)
    {
        info.AddValue("EmId", Empld);
        info.AddValue("EmName", name);
    }*/
}

public class SerializableDemo : MonoBehaviour {

    public void OtherEmployeeClasTest()
    {
        Employee em = new Employee();
        em.Empld = 10;
        em.name = "hello";
        em.NoSerializable = "word";

Employee em2 = new Employee();
em2.Empld = 11;
em2.name = "陈哲";
em2.NoSerializable = "你好";

        Stream steam = File.Open("c:\\temp3.dat",FileMode.Create);
        BinaryFormatter bf = new BinaryFormatter();
        bf.Serialize(steam,em);
bf.Serialize(steam,em2);
        steam.Close();

        Stream steam2 = File.Open("c:\\temp3.dat",FileMode.Open);
        BinaryFormatter bf2 = new BinaryFormatter();
        Employee mp = (Employee)bf2.Deserialize(steam2);
Employee mp1 = (Employee)bf2.Deserialize(steam2);
        steam2.Close();

        Debug.Log("ID : "+mp.Empld);
        Debug.Log("Name : "+mp.name);
        Debug.Log("NoSerializable : "+mp.NoSerializable);

Debug.Log("ID :  "+mp1.Empld);
Debug.Log("Name :  "+mp1.name);
Debug.Log("NoSerializable :  "+mp1.NoSerializable);
    }

// Use this for initialization
void Start () {
        OtherEmployeeClasTest();
}

// Update is called once per frame
void Update () {

}

    public Stream Steam { get; set; }
}

抱歉!评论已关闭.