我发现,如果可序列化的Field/Property具有相应的Boolean类型的字段,其名称的后缀为“Specified”,则XmlSerializer有条件地从序列化过程中排除该Field/Property。好的!

因此,我想避免定义这些字段,并在运行时动态添加它们...

阅读this时,我发现了一个有趣的接口(interface)IReflect,我可以使用它来“模拟” XmlSerializer实例用来排除某些字段的动态字段。

这行得通吗?

最佳答案

如果要控制xml序列化,则有两个选择。第一个(在这里可能不合适)它使用System.Xml.Serialization命名空间中的属性来排除属性。如果您确实需要确定在运行时将序列化的内容,那可能不是最佳的选择。

参见Attributes That Control XML Serialization

完成此操作的另一种方法是在类上实现IXmlSerializable接口(interface),并实现ReadXml和WriteXml方法。这使您可以完全控制xml的外观。有关其他信息,请参见此问题:

custom xml serialization

但是,正如这里提到的Mixing custom and basic serialization?,一旦实现IXmlSerializable,您将负责该类型的所有序列化逻辑。

10-08 19:20