TransWikia.com

Как считать много элементов при десериализации если заносим по одному элементу?

Stack Overflow на русском Asked by N A on November 26, 2020

Столкнулась с проблемой, что после занесения одного значения с помощью сериализации в бинарный файл стало невозможно считать массив структур с бинарного файла дисереализацией целиком, а только можно считать один элемент из бинарника.

Сериализуемая структура:

[Serializable]public struct UserInfo
    {
        public string Fio;
        public string Login;
        public string EncodedPassword;
        public string Key;

    }

Метод занесения в файл структуры:

 public static DBErrorHandler DBSave(UserInfo file)
        {
            BinaryFormatter formatter = new BinaryFormatter();

            
            var result = DBSearch(file.Login);

            result.Status = 0;
            if (result.Status == 0)
            {

                FileStream outputStream = File.OpenWrite(filename);
                formatter.Serialize(outputStream, file);
                outputStream.Close();

            }
            else
            {
                result.Exception = "Login already exists";
            }

            return result;

        }

Метод открытия файла:

 private static UserInfo[] DBOpen()
        {
            BinaryFormatter formatter = new BinaryFormatter();
            FileStream inputStream = File.OpenRead(filename);
            UserInfo[] DB = (UserInfo[])formatter.Deserialize(inputStream); // выводит ошибку
            inputStream.Close();
            return DB;
        }

Ошибка:

System.InvalidCastException: ‘Unable to cast object of type ‘WpfApp1.UserInfo’ to type ‘WpfApp1.UserInfo[]’.’

При изменении UserInfo[] DB = (UserInfo[])formatter.Deserialize(inputStream);
на UserInfo DB = (UserInfo)formatter.Deserialize(inputStream) ошибка исчезает, однако при данном коде становится невозможно считать значения дальше первого элемента.

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP