任何人都可以帮助这种方法吗?我有一个将文件反序列化为类型的通用方法。
public static T DeserializeFromFile<T>(string fileName) where T : class
{
if (!File.Exists(fileName))
return null;
try
{
using (FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
BinaryFormatter formatter = new BinaryFormatter();
stream.Seek(0, SeekOrigin.Begin);
return (T)formatter.Deserialize(stream);
}
}
catch (Exception ex)
{
return null;
}
}
知道为什么我会收到这个SerializationException吗?
谢谢。
答案 0 :(得分:2)
尝试删除stream.Seek(0, SeekOrigin.Begin);
,但无论如何,您如何序列化数据,也许还存在问题?一个合适的方法如下:
public static bool TrySerializeToFile<T>(string fileName, T data) where T : class
{
bool operationSucceed = false;
try
{
using (FileStream stream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write))
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, data);
operationSucceed = true;
}
}
catch
{ }
return operationSucceed;
}
答案 1 :(得分:0)
您是否尝试过使用Stream.Position属性?换句话说,而不是这句话:
stream.Seek(0, SeekOrigin.Begin);
该声明:
stream.Position=0;