我正在尝试使用泛型方法。但是一个特定类型的对象存在一些问题,所以对于该特定类型,但由于类型不匹配而出现错误。我该如何纠正这一点?不同于定义的泛型类型的条件返回
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
你可以总是先尝试将对象转换为我想要的,但是如果你不得不求助于你的设计,到那种事情。 –