這個問題在這里已經有了答案: 如何使用反射呼叫泛型方法? (8 個回答) 23 小時前關閉。
所以我有一個接受引數來提供型別的方法,我想將這種型別傳遞給我從 Redis 快取回傳的一些資料的反序列化。但它說“(變數名)是一個變數,但被用作一種型別”。有誰知道如何解決這一問題?
protected async Task<BaseModel> GetData<T>(string id, Type modelType) {
var data = await this.cacheDatabase.StringGetAsync(key).ConfigureAwait(false);
var response = JsonConvert.DeserializeObject<modelType>(data); // error here
return response;
}
如果我在反序列化中對模型型別進行硬編碼,它可以完美地作業,但當然這并不理想,因為我希望這種方法能夠處理各種不同的模型型別。有關作業代碼,請參見下文。
protected async Task<BaseModel> GetData<T>(string id) {
var data = await this.cacheDatabase.StringGetAsync(key).ConfigureAwait(false);
var response = JsonConvert.DeserializeObject<Dog>(data); // works fine as Dog is a child class of BaseModel.
return response;
}
uj5u.com熱心網友回復:
JsonConvert.DeserializeObject有一個多載,它接受一個型別的值Type作為第二個引數。所以你可以試試這個:
var response = JsonConvert.DeserializeObject(data, modelType);
而且根本不需要T型別引數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/525984.html
標籤:C#。网雷迪斯json反序列化stackexchange.redis
上一篇:如何在主視圖中集成側視圖
