我正在嘗試使用泛型方法。但是一個特定類型的對象存在一些問題,所以對於該特定類型,但由於類型不匹配而出現錯誤。我該如何糾正這一點?不同於定義的泛型類型的條件返回
private static T GetObjectFromFile<T>(string filename)
{
IsolatedStorageFile AppIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();
IsolatedStorageFileStream ISFileStream = AppIsolatedStorage.OpenFile(filename, System.IO.FileMode.Open);
byte[] buffer = new byte[ISFileStream.Length];
ISFileStream.Read(buffer, 0, buffer.Length);
ISFileStream.Close();
string data = Encoding.UTF8.GetString(buffer, 0, buffer.Length);
if (typeof(T) == typeof(MonitorBriefs))
{
return JsonParser.ParseMonitorBrief(data);//this is incorrect statement
}
else
{
return JsonConvert.DeserializeObject<T>(data);
}
}
你需要轉換到'T'爲了滿足編譯器的要求的代碼:'回報( T)JsonParser.ParseMonitorBrief'由於類型檢查和我的假設,類型實際上是相同的,應該真的最終只是一種形式。 –
@AdamHouldsworth已經嘗試過了,它說不能從MonitorBrief轉換到T – Ankit
你可以總是先嚐試將對象轉換爲我想要的,但是如果你不得不求助於你的設計,到那種事情。 –