2015-05-29 2 views
0

Итак, в основном у меня есть регистрационная форма, которая при заполнении файла будет создана и заполнена данными, введенными из регистрационной формы.Как заполнить второй список данными из файла

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

вот код для десериализации.

private void Login_Load(object sender, EventArgs e) 
    { 
     //List<Person> pList2 = new List<Person>(); 
     Stream s2 = File.Open("test.bin", FileMode.Open); 
     BinaryFormatter bf = new BinaryFormatter(); 
     List<Person> pList2 = new List<Person>(); 
     bf.Deserialize(s2); 
     foreach (Person p in pList2) 
     { 
      bf.Deserialize(s2); 
     } 
     s2.Close(); 

    } 
+0

Почему вы сохраняете текст в файл 'bin'? Почему бы просто не сохранить его в виде обычного текста, а затем прочитать его? Или заполнить список без записи в файл? –

+0

«Невозможно» не является надлежащим описанием проблемы. Объясните, что вы ожидаете, и что на самом деле происходит. Вам также необходимо показать код сериализации. Вы также ничего не делаете с результатом десериализации, например 'object deserialized = bf.Deserialize (s2)'. – CodeCaster

+0

это выглядит так, как pList2 пуст для меня. –

ответ

3

Похоже, что вы не сохраняете данные из Deserialization. Можете изменить его, чтобы быть чем-то вроде этого.

var pList2 = (List<Person>) bf.Deserialize(s2); 

Затем вы можете перебирать содержимое pList2.

также отличный пример BinaryFormatter здесь: https://msdn.microsoft.com/en-us/library/b85344hz(v=vs.110).aspx

+0

Я сделал это, но pList2 все еще «null» –

+0

В файле есть что-нибудь? Можете ли вы обновить свой код, чтобы отразить изменения? – JensB

-1

Следующая ссылка объясняет, как BinaryFormatter работает https://msdn.microsoft.com/en-us/library/c5sbs8z9%28v=vs.110%29.aspx

Вы можете найти ниже обновленный блок кода на основе вопроса

private void Login_Load(object sender, EventArgs e) 
    { 
     Stream s2 = File.Open("test.bin", FileMode.Open); 
     BinaryFormatter bf = new BinaryFormatter(); 
     List<Person> pList2 = (List<Person>)bf.Deserialize(s2); //Deserialize here no need to set to a new list first. 

     //Loop not required for Deserialize as it was stored as a list at this point all people will be available 
     //foreach (Person p in pList2) 
     //{ 

     //} 

     s2.Close(); 

    } 
+0

Почему голос? – StackRewind

+0

Это не имеет никакого отношения к вопросу, кроме «Как использовать BinarySerializer», и это не вопрос. – CodeCaster

Смежные вопросы