2011-03-06 103 views
1

在WCF中,如果我有這樣的代碼,並且我以XML格式返回它,則會自動生成XML。 我能否明確指定哪個XML將用於CustomerEntity的序列化?WCF自定義XML序列化

[OperationContract]  
[WebInvoke(Method = "GET"] 
CustomerEntity GetCustomer(int customerPk); 

我目前使用的另一種方法是返回的XElement,但這樣做的問題是,我不能也支持JSON的方式。

更新:我的類型是不可變的,並使用raedonly屬性,所以IXmlSerializable將不適用於我。

回答

2

在CustomerEntity上實現IXmlSerializable。

+0

對於多一點指導實施IXmlSerializable的,請參閱http: //stackoverflow.com/questions/279534/proper-way-to-implement-ixmlserializable – 2011-03-06 01:07:17

+0

謝謝你我會試試! – 2011-03-06 01:30:08

+0

事實證明這是行不通的,因爲我的類型是不可變的,所以我不能實現從xml :( – 2011-03-06 01:51:14

1

您可以嘗試使用Raw消息,即使用派生自Message類的契約類型,並通過覆蓋OnWriteBodyContents和其他可覆蓋的消息類成員,以您希望的方式編寫消息。請參考 節「從消息類繼承」 GOF下面的MSDN文章瞭解更多有關消息類重寫的成員, http://msdn.microsoft.com/en-us/library/ms734675.aspx

HTH, 阿米特