让XmlSerializer也序列化类或结构的私有和“公有常量”属性的最简单方法是什么?对,并不是所有的输出都是公开的。将其设置为私有或添加const会导致值不能序列化。
发布于 2009-01-09 19:43:54
XmlSerializer只查看公共字段和属性。如果你需要更多的控制,你可以实现IXmlSerializable和序列化你想要的任何东西。当然,序列化常量没有多大意义,因为您不能反序列化为常量。
发布于 2009-07-28 21:47:21
即使不能序列化私有属性,您也可以使用内部setter来序列化属性,就像下面这样:
public string Foo { get; internal set; }为此,您需要使用sgen.exe预先生成序列化程序集,并将此程序集声明为friend:
[assembly:InternalsVisibleTo("MyAssembly.XmlSerializers")]发布于 2009-01-09 19:45:36
请查看.NET 3.0中引入的DataContractSerializer。它也使用XML格式,在很多方面,它比XmlSerializer更好,包括处理私有数据。有关完整的比较,请参阅http://www.danrigsby.com/blog/index.php/2008/03/07/xmlserializer-vs-datacontractserializer-serialization-in-wcf/。
如果你只有.NET 2.0,有可以处理私有数据的BinarySerializer,但它当然是二进制格式。
https://stackoverflow.com/questions/429380
复制相似问题