请注意,我在此处发布此 QA 以帮助其他人,并作为合作伙伴在 Xamarin.Android Bugzilla 区域上报告错误 11881。因此,下面描述的类型仅用于演示目的。我已经发布了一个初步答案,也参考了相同的错误报告,但希望在某个时候这个问题可以用“这已在 xy 版本中修复”来“回答”。
我在 Mono for Android 和 Windows RT 源之间共享以下类型:
[CollectionDataContract(Name = "MyDictionary",
Namespace = "http://foo.bar/schema",
ItemName = "pair",
KeyName = "mykey",
ValueName = "myvalue")]
public class MyDictionary : Dictionary<string, string>
{
}
这是从我们的 Web API(在 Asp.Net Web API,Framework 4.5 上运行)读取为 XML 的,如下所示:
<MyDictionary
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://foo.bar/schema">
<pair>
<mykey>message1</mykey>
<myvalue>Hello</myvalue>
<pair>
<pair>
<mykey>message2</mykey>
<myvalue>World</myvalue>
<pair>
</MyDictionary>
使用上述类时,此 XML 在 Windows、Windows Phone 和 Win-RT 平台上正确反序列化。
但是,在 Mono for Android 版本中,我得到了
System.Runtime.Serialization.SerializationException: Expected element 'ArrayOfpair' in namespace 'http://foo.bar/schema', but found Element node 'MyDictionary' in namespace 'http://foo.bar/schema'
.
我做错了什么?