序列化自定义Line类

时间:2014-07-02 07:22:25

标签: c# serialization

我寻找一种序列化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

也许这个类不可序列化?

2 个答案:

答案 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);

要序列化一个类,它必须是可序列化的和公共的;类属性只有在公共且具有访问权限时才会被保留!