【发布时间】:2018-07-20 07:43:22
【问题描述】:
所以,我有一个我想要序列化的 Person 类(顺便说一下,我对序列化很陌生):
[Serializable()]
public class Person : ISerializable
{
public string Name { get; set; } = "No name";
public int Age { get; set; } = 5;
public string Gender { get; set; } = "Female";
public Person(string name, int age, string gender)
{
Name = name;
Age = age;
Gender = gender;
}
public Person() { }
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("Name", Name);
info.AddValue("Gender", Gender);
}
public Person(SerializationInfo info, StreamingContext context)
{
Name = (string)info.GetValue("Name", typeof(string));
Gender = (string)info.GetValue("Gender", typeof(string));
}
}
但是,当我对其进行序列化并打开我序列化到的文件时,该文件还包含 Age 属性的值。尽管如此,我并没有在 GetObjectData 方法中说“info.AddValue("Age", Age)”。这是我用来序列化的代码,可能有问题:
Person person1 = new Person("Raksa", 13, "Male");
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Person));
using (Stream stream = new FileStream(@"C:\Users\Marc\Desktop\Testdat.txt", FileMode.Create))
{
xmlSerializer.Serialize(stream, person1);
}
那么,这里有什么问题?从技术上讲,在序列化期间,它将序列化我在 GetObjecctData 方法中定义的我想要序列化的内容(这是微软所说的)。
附:非常感谢!欣赏它。
【问题讨论】:
标签: c# serialization