XML序列化和类别名?可能?

时间:2012-11-18 19:28:12

标签: c# c#-4.0 dotnet-httpclient

我正在使用HttpClient并进行GetAsync调用。然后我通过拨打response.ErrorSuccessStatusCode()来确保通话成功。

然后我致电response.Content.ReadAsAsync<WikiResponse>()。调用ReadAsAsync时出现错误,因为第三方REST服务正在传回,而XML响应称为“Response”而不是“WikiResponse”。这个WikiResponse是由另一个第三方创建的。我无法创建一个名为Response的对象,因为已经有一个名为this的类与其他DTO在同一“级别”,但具有不同的类结构。

有没有办法让WikiResponse“适应”响应?对于类名,XML和Classes结构是相同的。

感谢您的快速回复!

更新

我尝试在课堂上使用[XmlRoot(ElementName = "Response")],但它没有用。

这是我得到的错误:

[System.Runtime.Serialization.SerializationException] = {"Error in line 1 position 103.  Expecting element 'WikiResponse' from namespace 'http://schemas.datacontract.org/2004/07/Project.WikiResponses.DTO'.. Encountered 'Element'  with name 'Response', namespace 'http://www.someurl.com/url'. "}

1 个答案:

答案 0 :(得分:0)

您可以尝试ReadAsAsync的一个重载:

public static Task<T> ReadAsAsync<T>(
    this HttpContent content,
    IEnumerable<MediaTypeFormatter> formatters
)

并创建自己的MediaTypeFormatter。

http://msdn.microsoft.com/en-us/library/hh943959(v=vs.108).aspx