我有一个函数,我想将下面的Ping和Pong转换为泛型类型.可能吗?
private Pong ReadDataFromApi(string url, Ping data)
{
string url = "URL_TO_HIT";
WebResponse response = Util.SendWebRequest<Ping>(url, data, 30000);
var res = new Pong();
if (response != null)
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
var objText = reader.ReadToEnd();
res = JsonConvert.DeserializeObject<Pong>(objText);
}
}
return res;
}
Run Code Online (Sandbox Code Playgroud)
我可以转换成以下内容:
private T ReadDataFromApi(string url, T data) T : class
{
string url = "URL_TO_HIT";
WebResponse response = Util.SendWebRequest<T>(url, data, 30000);
var res = new Pong();
if (response != null)
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
var objText = reader.ReadToEnd();
res = JsonConvert.DeserializeObject<Pong>(objText);
}
}
return res;
}
Run Code Online (Sandbox Code Playgroud)
不确定如何接受Pong作为通用参数.
这样的事情应该有效:
private TPong ReadDataFromApi<TPing, TPong>(string url, TPing data)
where TPing : class
where TPong : class,new() //You need to create instances of TPong
{
WebResponse response = Util.SendWebRequest<TPing>(url, data, 30000);
var res = new TPong(); //Create instance of TPong
if (response != null)
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
var objText = reader.ReadToEnd();
res = JsonConvert.DeserializeObject<TPong>(objText);
}
}
return res;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |