【发布时间】:2010-03-23 15:46:09
【问题描述】:
我想像这样使用 XML 序列化:
class Foo {
public Foo (string name) {
Name1 = name;
Name2 = name;
}
[XmlInclude]
public string Name1 { get; private set; }
[XmlInclude]
private string Name2;
}
StreamWriter wr = new StreamWriter("path.xml");
new XmlSerializer<Foo>().Serialize (wr, new Foo ("me"));
编辑:我知道这段代码是错误的。只是为了显示我想如何使用它。
但这根本不起作用:
- XmlSerializer 不是通用的。我必须从和反对(反)序列化。
- 每个属性都必须完全公开。为什么我们不只是使用反射来访问私有设置器?
- 不能序列化私有字段。我想用一个属性装饰私有字段,让 XmlSerializer 包含它们。
我是否遗漏了什么,而 XmlSerializer 实际上提供了所描述的可能性?是否有替代的 XML 序列化程序可以更复杂地处理这些情况?
如果不是:我们毕竟是在 2010 年,而 .NET 已经存在很多年了。 XML 序列化经常被使用,完全标准并且应该很容易执行。还是我的理解可能是错误的,并且 XML 序列化不应该有充分的理由公开所描述的功能?
编辑: 遗留不是 imo 的一个好理由。 List一开始也不是通用的。
(请随意调整标题或标签。如果这应该是 CW,请留言。)
【问题讨论】:
-
同一个道理,用篮球挖洞是如此困难。 ;-)
-
说“
List起初是非通用的”是不对的。List是在 2.0 中引入的,当时是一个泛型类。较旧的非泛型ArrayList是一个不同的 类,它仍然存在。 -
哎呀。我的错误。我道歉:)
标签: c# xmlserializer