Конец потока обнаружен до завершения анализа.SerializationException - PullRequest
1 голос
/ 28 июля 2011

Кто-нибудь может помочь с этим методом? У меня есть общий метод десериализации файлов для типов.

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?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 28 июля 2011

Попробуйте удалить 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;
}
0 голосов
/ 21 января 2014

вы пытались использовать свойство Stream.Position? другими словами вместо этого утверждения:

stream.Seek(0, SeekOrigin.Begin);

Это утверждение:

stream.Position=0;
...