序列化自定义Line类
本文关键字:Line 自定义 序列化 | 更新日期: 2023-09-27 18:11:00
我寻找一种序列化List<Line>
的方法。
对于List<string>
或List<int>
我使用:
using (var fs = new FileStream("test.xml", FileMode.Create))
{
XmlSerializer xml = new XmlSerializer(typeof(List<int>));
xml.Serialize(fs, this.ListCo);
}
但这不适用于List<Line>
。如何保存这个列表?
我忘记写错误信息了:有一个错误是:' test productlors de la modifection type 'System.Collections.Generic.List ' 1[System.Windows.Shapes.Line]'.
类Line是公共密封类Line: Shape
您的class " Line
"必须是Serializable
:
[Serializable()]
public class Line
{ ... }
我想我在你的代码中看到一个错误:你告诉我们你必须序列化一个List<Line>
,但你试图将它序列化为List<int>
…
无论如何,我想提供一段用于序列化泛型类的代码:
class Xml
{
public static string Serialize(object objectToSerialize)
{
var mem = new MemoryStream();
var ser = new XmlSerializer(objectToSerialize.GetType());
ser.Serialize(mem, objectToSerialize);
var ascii = new UTF8Encoding();
return ascii.GetString(mem.ToArray());
}
public static string ToFile(object objectToSerialize, string filename)
{
try
{
var s = Serialize(objectToSerialize);
File.WriteAllText(filename, s);
return s;
}
catch (Exception e)
{
return null;
}
}
}
有一个obj类,我可以写var xml = obj.Serialize();
或obj.ToFile(filename);
要序列化一个类,它必须是可序列化的并且是公共的;只有当类属性是公共的并且具有访问器时,它们才会被持久化!