我正在尝试创建一个接受任何模型绑定到Json响应的方法,但我不知道如何动态地将类模型类型插入到泛型参数中。
这是我到目前为止所得到的:
public static async Task<object> DoPost(string url, FormUrlEncodedContent formEnc, object model)
{
using (HttpClient client = new HttpClient())
using (HttpResponseMessage response = await client.PostAsync(url, formEnc))
using (HttpContent content = response.Content)
{
var result = await content.ReadAsStringAsync();
var modelType = model.GetType();
model = JsonConvert.DeserializeObject<modelType>(result);
return model;
}
}
如何在modelType
中正确表示类型?
答案 0 :(得分:0)
您可以直接使用JsonConvert.PopulateObject
填充实例:
var result = await content.ReadAsStringAsync();
model = JsonConvert.PopulateObject(result, model);
return model;
答案 1 :(得分:0)
这可以简单地改为Generic,如下所示。然后你的Generic可以很容易地反序列化。
public static async Task<T> DoPost<T>(string url, FormUrlEncodedContent formEnc)
{
using (HttpClient client = new HttpClient())
using (HttpResponseMessage response = await client.PostAsync(url, formEnc))
using (HttpContent content = response.Content)
{
var result = await content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<T>(result);
}
}
现在可以使用任何类型的model
作为通用参数调用此方法。现在只需将T
传递给Generic参数,例如:
var user = DoPost<User>(url, formEnc);