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)
ошибка исчезает, однако при данном коде становится невозможно считать значения дальше первого элемента.
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP