1

如果实例不是派生的,显然 XmlSerializer 对对象工作顺利,否则我必须显式应用属性以将特定派生类包含到基类中。我有大约 50 多个派生类,将来可能还会更多,有没有办法告诉 XmlSerializer 自动序列化对象的派生部分,而不用麻烦我更明确地表达我想要的东西?我只想少打字。

4

1 回答 1

0

指定它们的需要主要是由于必须反序列化它们的复杂性。毕竟,在序列化点,它可以遍历继承树来查找信息。但是考虑被要求反序列化 a Foo,但是得到 a<bar>它并不是很明显如何解析类型。

XmlSerializer 明智地希望确保它可以执行这两种操作 - 就像它在序列化之前需要一个公共无参数构造函数一样,显然序列化不调用构造函数。所以最终:不 - 你将不得不告诉它类型。

请注意,这并不意味着您可以使用 XmlIncludeAttribute - 您还可以在 XmlSerializer 构造函数(额外类型)中提供此信息。但是,IMO 使用属性方法更方便,“少打字”当然不是不这样做的好理由。此外,如果使用 XmlSerializer(Type) 构造函数以外的任何内容,则需要缓存序列化程序以防止程序集泄漏。

我只是添加属性...

于 2012-01-21T11:52:36.483 回答