如何让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)
对于BinaryFormatter,只需在[Serializable]之前添加public class ....
对于XmlSerializer,什么; 如果你想要元素,这应该工作正常
对于DataContractSerializer(严格来说是3.0类),添加[DataContract]到类和[DataMember]属性中
对于protobuf-net,您可以使用DataContractSerializer属性,只要每个属性[DataMember]指定一个唯一属性Order=,或者您可以[ProtoContract]在类和[ProtoMember(n)]每个属性上使用这些属性,以获得唯一性n.
对于JavaScriptSerializer(技术上3.5),没有 - 它应该工作
对于Json.NET,没有 - 它应该工作
其他选择包括实施ISerializable或IXmlSerializable坦率地说:你不需要这样做.