列表中只有第一个对象被反序列化

时间:2015-12-21 19:33:09

标签: c# serialization binaryformatter

我在反序列化对象列表时遇到问题。由于某种原因,仅从load方法返回序列化列表中的第一个对象。我已经查看了许多似乎相关的问题,但我们无法找到解决我具体问题的方法。我认为这可能与我使用的私人支持系列有关?任何帮助,将不胜感激。 (类名和方法已经通用)

这是我的反序列化方法:

    public static ObjectList LoadLibrary()
    {
        BinaryFormatter formatter = new BinaryFormatter();
        FileStream loadStream;
        string path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "ObjectList.bin");
        ObjectList lib = null;

        if (!File.Exists(path))
        {
            lib = new ObjectList();
            return lib;
        }

        try
        {
            using (loadStream = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                lib = (ObjectList)formatter.Deserialize(loadStream);
            }
        }
        catch (Exception e)
        {
            MessageBox.Show("Object list could not be loaded. Error: \n" + e);
        }
        return lib;
    }

这是我的ObjectList类;

[Serializable]
public class ObjectList: IEnumerable<Obj>
{
    #region Construction
    /// <summary>
    /// Contracts Test Case Library Constructor
    /// </summary>
    public ObjectList() { }

    /// <summary>
    /// Private backing collection
    /// </summary>
    private List<Obj> _objectList = new List<Obj>();
    #endregion

好的方面,这是我的Obj课程:

[Serializable]
public class Obj
{
    #region Constructors
    public Obj(string Name, string Description)
    {
        this.Name = Name;
        this.Description = Description;
    }

    public Obj() { }
    #endregion

0 个答案:

没有答案