2

我有这样的课

public class Record
{
    public Int32 TotalTrail { get; set; }
    public TimeSpan MyTimeSpan { get; set; }
    public DateTime MyDateTime { get; set; }
}

我有一个列表来保存它的对象:

List<Record> _records;

然后当我想序列化列表时:

序列化器。序列化(流,_records);

上面一行存在运行时错误:

无法将 System.Collections.Generic.List`1[[SimpleGame.Record, SimpleGame, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] 类型的对象分配给 SimpleGame.Record 类型的对象。

是因为我无法序列化列表吗?我怎样才能解决这个问题?

4

5 回答 5

5

您必须为类型创建序列化程序,List<Record>而不是Record

于 2012-06-03T06:50:30.203 回答
1

如果要序列化为 XML,甚至不需要实现可序列化。以下是将任何对象写入文件的快速简便方法:

Dim s As System.Xml.Serialization.XmlSerializer
Using fs As New IO.FileStream(thePath, FileMode.Create, FileAccess.Write, FileShare.Write)
    Using w As System.Xml.XmlTextWriter = New System.Xml.XmlTextWriter(fs, System.Text.Encoding.Default)
        s = New System.Xml.Serialization.XmlSerializer(GetType(T))
        w.Formatting = Xml.Formatting.Indented
        s.Serialize(w, m_objectToSerialize)
    End Using
End Using
于 2012-06-03T06:40:45.050 回答
0

我认为您需要指定您的对象是Serializable,以下是示例。

[Serializable()]
public class Record 
{ 
    public Int32 TotalTrail { get; set; } 
    public TimeSpan MyTimeSpan { get; set; } 
    public DateTime MyDateTime { get; set; } 
}

另一个溶胶

你可以实现ISerializable接口

public class Record : ISerializable
{ 
    public Int32 TotalTrail { get; set; } 
    public TimeSpan MyTimeSpan { get; set; } 
    public DateTime MyDateTime { get; set; } 
}
于 2012-06-03T06:25:58.177 回答
0

使您的课程可序列化...检查此链接。http://msdn.microsoft.com/en-us/library/4abbf6k0.aspx

于 2012-06-03T06:39:40.317 回答
0

我遇到了同样的问题:我所做的是,我去了您为其创建列表的类并添加了一个无参数构造函数。我在某处读到序列化与无参数构造函数一起使用。一旦我这样做了。它就像一个魅力!希望它有效.. 像这样的东西

public class InventoryType
{
    public DateTime Date { get; set; }
    public int ID { get; set; }
    public string RoomT { get; set; }
    public int Quantity { get; set; }

    public InventoryType() { }

    public InventoryType(DateTime date, int id, string roomT, int quantity)
    {

        this.Date = date;
        this.ID = id;
        this.RoomT = roomT;
        this.Quantity = quantity;
    }

    public override string ToString()
    {           
        return "Date: " + Date + "\nID: " + ID + "\nRoom Type: " + RoomT + "\nQuantity: " + Quantity;
    }
}
于 2017-09-23T22:25:33.933 回答