我寻找一种序列化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>
。我如何保存此列表?
我忘了把错误信息: Une erreur s'est produite lors delaréflexiondutype'System.Collections.Generic.List`1 [System.Windows.Shapes.Line]'。
“Line”类是公共密封类Line:Shape
也许这个类不可序列化?
答案 0 :(得分:1)
Yuor课程“Line
”必须为Serializable
:
[Serializable()]
public class Line
{ ... }
答案 1 :(得分:1)
我认为我的代码中发现错误:您告诉我们您必须序列化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);
要序列化一个类,它必须是可序列化的和公共的;类属性只有在公共且具有访问权限时才会被保留!