【发布时间】:2011-08-29 23:30:11
【问题描述】:
我有一个时髦的场景,由于我们使用了 .NET 4 和 C# 4,它似乎就在包里。事实证明,该解决方案更复杂,并且在某些完全自定义的解决方案之外可能不存在。
简而言之,我需要序列化一个动态对象,该对象具有一组固定的必需属性和任意一组可选属性。根元素必须在 xmlns 属性中包含自定义 xml 命名空间,并且某些子对象可能需要使用不同的 xml 命名空间。我们的第一种方法是从DynamicObject 派生一个自定义类。这允许我们添加一个XmlRootAttribute 并指定一个命名空间。除非在动态属性上定义自定义命名空间很复杂,否则即使这种简单的方法似乎也不起作用。 XmlSerializer 尽管传递了一个 dynamic 变量作为要序列化的对象,但它只是序列化硬编码的属性,并忽略对象的任何动态方面。
我们使用 JsonFx 2.0 已经有一段时间了,决定试一试。通过对 DynamicObject 衍生品的一些仔细改进,我们能够让 JsonFx 2.0 序列化所有必要的内容,但是它拒绝序列化任何 xmlns 属性。
有没有办法将部分动态的对象序列化为 xml 并包含特定的命名空间?或者这仅仅是必须定义一个任意复杂的对象图的情况,选择适合特定需求的图作为在运行时动态派生的?
在序列化动态对象方面,.NET 4 的 xml 序列化故事似乎相当松懈。
【问题讨论】:
-
你有没有想出不同的解决方案来解决这个问题?如果是这样,如果你在这里发布它会很好。 :-)
-
你可以试试这个解决方案:stackoverflow.com/questions/18951521/…
标签: xml c#-4.0 serialization dynamic xml-namespaces