【发布时间】:2010-02-22 03:52:18
【问题描述】:
任何人都知道为什么以下由 C# 中的数据合约序列化程序生成的 XML 在 Windows 中可以正常工作,但在 Mono 上的 Linux 下却不行?
XML:
<Message i:type="UserMessage" xmlns="http://schemas.datacontract.org/2004/07/NetTunnel"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><type>UserMessage</type>
<nick>Unnamed</nick><services><Service><enabled>true</enabled><port_ranges i:nil="true"/>
<service_name>vent</service_name></Service></services><state>Created</state>
<userid>1</userid></Message>
错误:
Unhandled Exception: System.Runtime.Serialization.SerializationException: Deserializing
type 'System.Object'. Expecting state 'EndElement'. Encountered state 'Element' with
name 'enabled' with namespace 'http://schemas.datacontract.org/2004/07/NetTunnel'.
如果没有列出服务(xml 标签<services/>),它也会给我一个错误。 services 变量的类型为List<Service>。这只是 Mono 无法处理的类型吗?其他类型会更合适吗?还是完全是另外一回事?
【问题讨论】:
-
出于好奇 - 您打算使用 WCF 吗?还是只是为了分享数据?如果是后者,我可以推荐一些跨平台的替代序列化程序(开源,因此每个平台上的源代码相同)。
-
不需要使用WCF,只需要共享数据。我很想听听替代序列化程序。希望它们与注释一样易于使用?
标签: c# mono datacontractserializer