我想像这样使用 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,请记下。)