Столкнулся с такой проблемой. Есть класс User
. В нем есть метод SaveUser
, который записывает в файл только 1 запись. Есть метод LoadUsers
, который возвращается список всех записанных в файл пользователей. Ошибка происходит в строчке с комментарием. Он не может конвертировать User в User[]. Как решить эту проблему без переписывания метода SaveUser
?
class User
{
private string name;
private string password;
private string key;
private static string fileName = @"Data\users.dat";
public void SaveUser()
{
BinaryFormatter formatter = new BinaryFormatter();
// получаем поток, куда будем записывать сериализованный объект
using (FileStream fs = new FileStream(fileName, FileMode.Append))
{
formatter.Serialize(fs, this);
}
}
public static List<User> LoadUsers()
{
List<User> listUser = new List<User>();
BinaryFormatter formatter = new BinaryFormatter();
//десериализация из файла people.dat
using (FileStream fs = new FileStream(fileName, FileMode.Open))
{
if (fs == null)
return listUser;
else
{
User[] deserilizeUsers = (User[])formatter.Deserialize(fs);// ошибка, нельзя преобразовать User в User[]
foreach (User user in deserilizeUsers)
{
listUser.Add(user);
}
}
}
return listUser;
}
}
Как уже сказано в комментарии, десериализовать записи нужно по одной, в цикле. Примерно, так:
List<User> listUser = new List<User>();
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream fs = new FileStream(fileName, FileMode.Open))
{
while (fs.Position < fs.Length)
{
var user = (User)formatter.Deserialize(fs);
listUser.Add(user);
}
}
return listUser;
Конечно, нужно добавить обработку исключений.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Работаю в WinForms и iTextSharpСоздаю новый документ PDF ставлю на фон jpg изображение
В определенный момент visual studio перестал при запуске C# проекта (WinForms) выдавать уведомления, указывающие, какая именно операция сгенерировала...
В конструкторе формы добавил ImageList и в него добавил изображениеНа вкладке выбрал изображение в ImageIndex
Создаю виртуальный музей на unityКогда игрок подходит к экспонату и нажимает на Е, должно появиться подробное описание и камера 360