我需要將變量對象類型作爲參數傳遞給構造函數,並且能夠從構造它的方法返回變量類型。它很難解釋,所以也許代碼會做得更好。將變量類型傳遞給構造函數,並返回傳入的相同類型
爲了將對象類型傳遞給構造函數,我試過了。
public async Task<BlockData.Block> Last()
{
return await new AsyncConnector<BlockData.Block>(Connection).Get(
"/chain/last-block"
);
}
,並接受它,我這樣做:
public class AsyncConnector<T>
{
NisConnection Connection = null;
public AsyncConnector(NisConnection connection)
{
Connection = connection;
}
public async Task<T> Get(string uri)
{
var response = await Connection.Client.GetAsync(Connection.FullUri(uri));
return JsonConvert.DeserializeObject<T>(
JObject.Parse(await response.Content.ReadAsStringAsync()).ToString()
);
}
}
我也試過這樣:
public async Task<BlockData.Block> Last()
{
return await new AsyncConnector(Connection).Get<BlockData.Block>(
"/chain/last-block"
);
}
public class AsyncConnector
{
NisConnection Connection = null;
public AsyncConnector(NisConnection connection)
{
Connection = connection;
}
public async Task<T> Get<T>(string uri)
{
var response = await Connection.Client.GetAsync(Connection.FullUri(uri));
return JsonConvert.DeserializeObject<T>(
JObject.Parse(await response.Content.ReadAsStringAsync()).ToString()
);
}
}
的GetAsync
方法需要的工作方式相同,但對於許多不同的對象類型。
我不斷收到的錯誤是:
型「Microsoft.CSharp.RuntimeBinder.RuntimeBinderException」的異常出現在mscorlib.dll,但在用戶代碼中沒有處理
其他信息:無法轉換類型「Newtonsoft.Json.Linq.JObject」到「NemApi.DTOs.BlockObjects.BlockData.Block」
你可以直接反序列化字符串,而不用解析爲'JObject'嗎? – Hendry
你是什麼意思? – netnoob
它仍然存在不知道將其反序列化到哪種類型的問題,無論它是否從JObject或字符串反序列化。 – netnoob