2011-12-23 22 views
2

我可以使用C#中的XmlSerializer控制某些字段的序列化吗? Fox示例将名为“Type”(字符串)的属性序列化为其他字符而不是字符串。 在此先感谢。我可以使用XmlSerializer控制某些字段的序列化

+0

您可以根据[Serializable]属性控制什么获得序列化,所以对于一个Class,例如,您可以选择将整个类序列化或只是某些属性,例如 – MethodMan

回答

5

您可以通过XmlElement/XmlAttribute注释来控制一些东西 - 元素的名称,它是属性还是完整的XML元素等。但是,您不能直接更改类型。如果您需要支持任何类型的复杂序列化方案,由于其很多限制,XmlSerializer并不是一个好选择。你最好使用DataContractSerializer(参见WCF文档中的"Using Data Contracts"),或者甚至可以自己编写它。

如果你只是想(使用自定义XML类型或命名空间EG)以改变所产生的序列化数据的XML类型,您可以做到这一点与XmlType属性,但这样做只为你声明工种而不是原始的CLR类型(例如,你不能将一个字符串变成一个整数或另一个更复杂的类型)。

0

我想你想的IXmlSerializable interface

你无法控制打字只是使用属性。你必须推出你自己的代码来序列化/反序列化类。该界面允许你这样做。

1

您可以通过XMLIgnore属性控制要序列化的内容。这不会序列化用此属性装饰的属性。

您还可以使用XMLType来管理XML序列化程序如何序列化类型,但这并不意味着您可以直接影响CLR类型。

你不能使用序列化来改变CLR类型。

相关问题