【发布时间】:2014-03-29 01:12:57
【问题描述】:
我有以下场景:
public class WidgetBaseDTO
{
public int WidgetID
{
get;
set;
}
}
public class WidgetTypeA : WidgetBaseDTO
{
public string SomeProperty1
{
get;
set;
}
}
public class WidgetTypeB : WidgetBaseDTO
{
public int SomeProperty2
{
get;
set;
}
}
我的 Web 服务返回以下仪表板对象,而 Widgets 集合可以是 A 或 B 类型:
public class DashboardDTO
{
public List<WidgetBaseDTO> Widgets
{
get;
set;
}
}
我的问题是,虽然客户端接收到正确的 JSON 内容,这取决于 Widget 类型,但在读取响应内容时,它们都被转换为 WidgetBaseDTO。将这些对象转换为相关类型的正确方法是什么?
这是读取响应的方式:
string relativeRequestUri = string.Format("api/dashboards/GetDashboard?dashboardID={0}", dashboardID);
using (var client = new HttpClient())
{
// set client options
client.BaseAddress = this.BaseUri;
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// make request
HttpResponseMessage response = client.GetAsync(relativeRequestUri).Result;
if (response.IsSuccessStatusCode)
{
DashboardDTO dashboard = response.Content.ReadAsAsync<DashboardDTO>().Result;
}
【问题讨论】:
-
您能分享一下您是如何在客户端读取响应的吗?
-
刚刚分享了一段代码。请见上文。
标签: json asp.net-web-api dto dotnet-httpclient