任何人都知道为什么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/>
)服务。服务变量的类型为List<Service>
。这只是Mono无法处理的类型吗?另一种类型会更合适吗?还是完全是另一回事?
出于好奇 - 是你的目标是使用WCF?或者只是分享数据?如果后者我可以推荐一些跨平台的替代串行器(开源,每个平台上都有相同的源代码)。 – 2010-02-20 23:20:42
不需要使用WCF,只需要共享数据。我很想听听其他序列化程序。希望他们能够很容易地使用注释? – Nayruden 2010-02-20 23:55:47