請注意我在此處發佈此質量保證以幫助其他人以及bug report 11881 on the Xamarin.Android Bugzilla area的合作伙伴。因此,下面描述的類型僅用於演示目的。我已經發布了一個初步的答案,也參考了同一個錯誤報告,但希望在某個時候,這個問題可以'回答','已經在x.y版本中修復'。(MfA) - 字典類型上的CollectionDataContractAttribute的名稱屬性被忽略
我有單間共享針對Android和Windows RT來源如下類型:如XML,看起來
[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運行,框架4.5)像這樣:
<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手機和Win-RT平臺。
然而,在Mono的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'
。
我做錯了什麼?