我有一个WCF休息服务。它有一个返回对象列表的方法。对象类型设置为DataContract,并具有DataMembers。现在它工作的很好,我可以通过我的方法将我的对象列表作为XML。这是伟大的,很好。WCF REST结果XML
我的问题是:有没有什么办法从方法返回之前得到结果XML?那么,在通过REST调用我的方法时,我可以在我的方法中使用完全相同的XML吗?
.NET4/VS2010
我有一个WCF休息服务。它有一个返回对象列表的方法。对象类型设置为DataContract,并具有DataMembers。现在它工作的很好,我可以通过我的方法将我的对象列表作为XML。这是伟大的,很好。WCF REST结果XML
我的问题是:有没有什么办法从方法返回之前得到结果XML?那么,在通过REST调用我的方法时,我可以在我的方法中使用完全相同的XML吗?
.NET4/VS2010
阿方索的回答是有些的权利,但你提到你使用DataContract
和DataMember
。 XmlSerializer
类不适用于数据合同。相反,你要找的是DataContractSerializer
。使用,是非常相似的,但会看起来像这样:
DataContractSerializer serializer = new DataContractSerializer(typeof(YourResultType));
StringBuilder stringBuilder = new StringBuilder();
using(XmlWriter xmlWriter = XmlWriter.Create(stringBuilder))
{
serializer.WriteObject(xmlWriter, someInstanceOfYourResultType);
}
// use stringBuilder.ToString() to get the XML
你可以使用XmlSerializer的返回之前将结果保存到一个XML字符串。
XmlSerializer ser = new XmlSerializer(typeof(YourResultType));
StringBuilder sb = new StringBuilder();
StringWriter sw = new System.IO.StringWriter(sb);
ser.Serialize(sw, yourResult);
// Use sb.ToString()
Thx alfonso,我会检查它! :) – Tom
XmlSerializer不会遵守Tom提到的他使用的DataContract/DataMember属性,他需要为此使用DataContractSerializer。 –
非常感谢,它正在工作! – Tom