Как считать много элементов при десериализации если заносим по одному элементу?
Столкнулась с проблемой, что после занесения одного значения с помощью сериализации в бинарный файл стало невозможно считать массив структур с бинарного файла дисереализацией целиком, а только можно считать один элемент из бинарника.
Сериализуемая структура:
[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) ошибка исчезает, однако при данном коде становится невозможно считать значения дальше первого элемента.