この 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'
.
私は何を間違えましたか?