XMLシリアライザ(DataContract
シリアライザではありません)によって生成されたXMLを返すREStful WCFサービスを開発中です。WCF:ルート要素のXmlSerialization属性が無視されました
ほとんどのオブジェクトは正しくフォーマットされていますが、返されるもののルート要素は自分のXMLシリアル化属性を無視しているようです。
たとえば、リソース/accounts/
は、自分のAccountListクラス(それ自体、シリアル化する必要があるいくつかのプロパティを持つ自分のObjectList<T>
クラスのサブクラス)のXMLシリアル表現を返します。しかし、私は私が望む結果を得ていない。ここで
は私のコードです:
[XmlRoot("accounts")]
public class AccountList : ObjectList<Account> {
}
public class ObjectList<T> : List<T> {
[XmlAttribute("foo")]
public Int32 FooProperty { get; set; }
}
[OperationContract]
[WebGet(UriTemplate="/accounts")]
public AccountList GetAccounts() {
return new AccountList() {
new Account("bilbo baggins"),
new Account("steve ballmer")
};
}
そして、これは、Webサービスによって返されるものです。
<arrayOfAccount>
<Account>
<name>biblo baggins</name>
</Account>
<Account>
<name>steve ballmer</name>
</Account>
</arrayOfAccount>
だから、主な問題はAccountListクラスの私の希望シリアライズは無視されていることです"Account"は小文字で "name"プロパティ(これらのプロパティで[XmlElement( "name")]を使用していて、小文字であるようにする方法を知りたいです。
ありがとう!これは動作しますが、この方法には以下の属性を追加しようとします
いいえ、それはまったく機能しませんでした。 – Dai
ええ、[戻り値:*]属性はあまりにも悪くなっていないようです。 – alexdej