序列化自定义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

序列化自定义Line类

您的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);

要序列化一个类,它必须是可序列化的并且是公共的;只有当类属性是公共的并且具有访问器时,它们才会被持久化!