C# 类不能序列化 怎么办

2025-12-17 23:32:54
推荐回答(5个)
回答1:

类声明:

[Serializable]     //←这里加一个[Serializable]
public class Preson
{
//......
}

序列化和反序列化:

//===================序列化===================
//首先,创建一个对象
Person p = new Person();
//我们意图使用一个文件来保存这个对象,于是我们会用到一个文件流
using (FileStream fs = new FileStream("D:/xx.xx", FileMode.OpenOrCreate, FileAccess.Write))
{
        //创建一个BinaryFormatter对象用于序列化操作。p=>xx.xx
    BinaryFormatter bf = new BinaryFormatter();
    //顾名思义,序列化。
    //需要我们存放对象的文件的流,当然需要我们意图序列化的对象。
    bf.Serialize(fs, p);
}
//===================反序列化===================
Person p2 = null;
//首先我们有一个已经存放对象的文件,即上面你的操作产生的文件xx.xx
using (FileStream fs = new FileStream("D:/xx.xx", FileMode.Open, FileAccess.Read))
{
        //同样创建一个BinaryFormatter对象用于反序列化。xx.xx=>p2
    BinaryFormatter bf = new BinaryFormatter();
    //顾名思义,反序列化。
    //需要我们存放对象的文件的流。
    //该方法返回的object可强制转化为Person对象,因为xx.xx文件原本就是一个Person对象序列化得到的
    p2 = (Person)bf.Deserialize(fs);
}

回答2:

你的类里是不是还有其他自定义的类,需要在那个类的定义上加Serializable

回答3:

类名前是否加了Serializable特性

[Serializable]
public partial class Yourclass

回答4:

重写这个类,试试这个吧。
private string _valuecolumn;
public string ValueColumn
{
get { return _valuecolumn; }
set { _valuecolumn = value; }
}

回答5:

在上方 [Serializable] 就可以了