可序列化的类

yon*_*236 3 c# .net-2.0

如何让Student class可序列化?我正在读这篇文章,但如果我在下面的场景中实现它,我不知道什么是正确的方法.

public class Student
{
    private string _studentNumber;
    private string _lastName;
    private string _firtName;
    private List<Subject> _subjects;

    public Student() { }

    public string StudentNumber
    {
        get { return _studentNumber; }
        set { _studentNumber = value; }
    }

    public string LastName
    {
        get { return _lastName; }
        set { _lastName = value; }
    }

    public string FirstName
    {
        get { return _firtName; }
        set { _firtName = value; }
    }

    public List<Subject> Subjects
    {
        get { return _subjects; }
        set { _subjects = value; }
    }
}

public class Subject
{
    private string _subjectCode;
    private string _subjectName;

    public Subject() { }

    public string SubjectCode
    {
        get { return _subjectCode; }
        set { _subjectCode = value; }
    }

    public string SubjectName
    {
        get { return _subjectName; }
        set { _subjectName = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 9

对于BinaryFormatter,只需在[Serializable]之前添加public class ....

对于XmlSerializer,什么; 如果你想要元素,这应该工作正常

对于DataContractSerializer(严格来说是3.0类),添加[DataContract]到类和[DataMember]属性中

对于protobuf-net,您可以使用DataContractSerializer属性,只要每个属性[DataMember]指定一个唯一属性Order=,或者您可以[ProtoContract]在类和[ProtoMember(n)]每个属性上使用这些属性,以获得唯一性n.

对于JavaScriptSerializer(技术上3.5),没有 - 它应该工作

对于Json.NET,没有 - 它应该工作

其他选择包括实施ISerializableIXmlSerializable坦率地说:你不需要这样做.