【发布时间】:2018-12-04 12:53:36
【问题描述】:
我有几个成员的简单类,比如说String name 和list<String> friends。创建类的实例后,我想序列化对象并将其反序列化:
//serialize
myClass mine = new myClass();
mine.name = "Peter";
var xmls = new XmlSerializer(typeof(myClass));
using (System.IO.FileStream file = System.IO.File.Create(path))
{
xmls.Serialize(file, mine);
}
//deserialize
var xmls = new XmlSerializer(typeof(myClass));
using (System.IO.FileStream file = System.IO.File.Open(path, System.IO.FileMode.Open))
{
myClass mine = (myClass) xmls.Deserialize(file);
Console.writeline(mine.name);
}
反序列化过程运行良好,这让我有点吃惊,因为我预计我需要 XML 元素的装饰器。背后的黑客是什么?这是因为我没有在课堂上使用其他变量吗?何时应使用 [XmlElement("Name")] 之类的装饰器将成员标记为反序列化?
谢谢!
【问题讨论】:
-
不确定我是否理解这个问题。有没有看xml,有什么不对的地方吗?
-
一切都是正确的。我只是想知道 XML 反序列化器如何知道变量的名称,我想装饰器是为此目的而存在的。很久以前我在玩 C#,我记得我必须放置装饰器才能正确解析“反序列化”XML,变量名还不够。
-
属性必须是公开的才能序列化。
标签: c# xml serialization deserialization decorator