したがって、次のような XML があります。
<a>
<b c="1" ></b>
<b c="2" ></b>
<b c="3" ></b>
<b c="4" ></b>
</a>
DataContractSerializer を使用して wp7 でこれをデシリアライズしたいのです。
この XML を追加のタグで囲み、ルート レベルから < a > をプッシュするなどのトリックなしでは、それを行うことは不可能であるという意見に出くわしました。
本当ですか?
あなたの要求に応じて、私はいくつかのコードを追加しています
クラス:
[KnownType(typeof(B))]
[DataContract(Namespace = "")]
public class A:List<B>
{
[DataMember]
public List<B> B
{
List<B> _b = new List<B>();
get { return _b; }
set { _b = value; }
}
}
[DataContract(Namespace = "")]
public class B
{
[DataMember]
public string c = "foo";
}
逆シリアル化:
var serializer = new DataContractSerializer(typeof(A));
var o = serializer.ReadObject(SomeResponseStream);
そして、これの他の多くのバリエーション。
ちなみに、このクラスの配置は、次のように XML にシリアライズされます。
<a>
<b>
<b c="1" ></b>
<b c="2" ></b>
<b c="3" ></b>
<b c="4" ></b>
</b>
</a>
< b > の追加の望ましくないレベルに注意してください