[英]Get the type of class to use in generic parameter
我正在尝试制作一种方法,该方法接受任何要绑定到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
?
您可以使用JsonConvert.PopulateObject
直接填充实例:
var result = await content.ReadAsStringAsync();
model = JsonConvert.PopulateObject(result, model);
return model;
可以简单地将其更改为通用,例如以下。 这样,您的泛型就可以轻松地反序列化了。
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
例如:
var user = DoPost<User>(url, formEnc);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.