1

誰でもこの方法を手伝うことができますか?ファイルを型に逆シリアル化するための一般的な方法があります。

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が発生する理由はありますか?

ありがとうございました。

4

2 に答える 2

2

removestream.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;
}
于 2011-07-27T22:35:41.957 に答える
0

Stream.Position プロパティを使用しようとしましたか? つまり、このステートメントの代わりに:

stream.Seek(0, SeekOrigin.Begin);

その声明:

stream.Position=0;
于 2014-01-21T17:32:07.973 に答える