我正在尝试使用通用方法。但是一个特定类型的对象存在一些问题,因此对于那种特定类型,但由于类型不匹配而导致错误。我怎么能纠正这个?
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);
}
}
答案 0 :(得分:0)
不太好但是试试这个:
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 (T)(object)JsonParser.ParseMonitorBrief(data);//this is incorrect statement
}
else
{
return JsonConvert.DeserializeObject<T>(data);
}
}
答案 1 :(得分:0)
不幸的是,.NET无法实现。您可以删除在此方法之外移动if语句并将返回类型设置为T.或者使用包装器对象,您可以在其中设置两种类型并返回该类型。
将它转换为对象不应该是一个选项,因为你需要将它强制转换回调用方法的代码