C# 如何序列化自定义对象类型列表
我有这样的课C# 如何序列化自定义对象类型列表,c#,list,serialization,exception-handling,xmlserializer,C#,List,Serialization,Exception Handling,Xmlserializer,我有这样的课 public class Record { public Int32 TotalTrail { get; set; } public TimeSpan MyTimeSpan { get; set; } public DateTime MyDateTime { get; set; } } 我有一个列表来保存它的对象: List<Record> _records; List\u记录; 然后,当我要序列化列表时: 序列化(流,_记录) 上一行出现
public class Record
{
public Int32 TotalTrail { get; set; }
public TimeSpan MyTimeSpan { get; set; }
public DateTime MyDateTime { get; set; }
}
我有一个列表来保存它的对象:
List<Record> _records;
List\u记录;
然后,当我要序列化列表时:
序列化(流,_记录)
上一行出现运行时错误:
无法将System.Collections.Generic.List`1[[SimpleName.Record,SimpleName,Version=1.0.0,Culture=neutral,PublicKeyToken=null]]类型的对象分配给SimpleName.Record类型的对象
是因为我无法序列化列表吗?如何修复此问题?我认为您需要指定对象是可序列化的,以下是示例
[Serializable()]
public class Record
{
public Int32 TotalTrail { get; set; }
public TimeSpan MyTimeSpan { get; set; }
public DateTime MyDateTime { get; set; }
}
另一个Sol
您可以实现ISerializable
接口
public class Record : ISerializable
{
public Int32 TotalTrail { get; set; }
public TimeSpan MyTimeSpan { get; set; }
public DateTime MyDateTime { get; set; }
}
使您的类可序列化。。。检查此链接 如果要序列化为XML,甚至不需要实现serializable。以下是将任何对象写入文件的简单快捷方法:
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
您必须为类型
列表创建序列化程序,而不是记录我遇到了同样的问题:
我所做的是,我去了一个你列出的类,并添加了一个无参数构造函数。我在某个地方读到,序列化可以使用无参数构造函数。有一次我这么做了。它就像一个符咒!希望它能奏效。。
像这样的
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;
}
}
如何创建序列化程序
?请注意,XmlSerializer不正确地处理时间跨度(请参阅,包括解决方法)。能否粘贴创建序列化程序的代码,然后读取答案?:)XmlSerializer不需要[Serializable]。但是,为列表类型创建序列化程序是可以的。我不确定,所以我将答案更改为更灵活的答案哦!我没有意识到他在专门谈论XmlSerializer。我还没有机会添加如何创建Serizizer,而你已经猜到了哪里出了问题!!谢谢!这解决了我的问题。我很注意,今天我学到了一些东西!!!这两个都不适用于XmlSerializerwell,最初他没有指定他使用的是XMLSerializer
标记在初始版本中(在另一个用户编辑之前)。我想这是一个新手错误……下次会稍微小心一点……但仍然是有用的信息,感谢您指出这一点。这根本不适用于XmlSerializer标记在初始版本中(在其他用户编辑之前)