铸造和反序列化

时间:2012-10-30 18:59:51

标签: c# xml

我遇到反序列化问题。想象一下,我们正在创建一个允许绘制线条的绘图应用程序。我们有一个班级负责一条线的绘图方法,所以我们称之为 clsLine

现在,每条线路的起点和终点可以与其他线路建立N个连接。到目前为止一切都好。现在,我需要将绘图存储在xml文件中,以便我们进行序列化。问题是,当我打开xml文件以将绘图反序列化回过去的对象时,我们遇到异常错误。

事实是我们正在使用每行的列表来在其末端添加每个连接的线或线段。

更新:

public class clsLine : ShapeBase
{
    //has all the properties and methods that should be applied to a line
    //e.g. length, angle, and etc.
    Connections endConnections = new Connections();
    Connections startConnections = new Connections();

}


public class Connection
{
    clsLine segment;
    int handle;

    public clsLine Segment
    {
        get { return segment; }
        set { segment = value; }
    }

    public int Handle
    {
        get { return handle; }
        set { handle = value; }
    }
}



public class Connections : List<Connection>
{
   public bool Contains(ShapeBase instance)
   {
        foreach (Connection con in this)
        {
            if (instance.Equals(con.Segment))
               return true;
        }
        return false;
   }
}

现在,在反序列化期间,我们得到一个例外:

&#39;为#Pro; OurProjectNameSpace.Connections&#39;类型的集合添加值。提出异常。&#39;

我的同事解释说这是因为来自&#34; Connection&#34;到&#34;连接&#34;这是有道理的。请记住,Connections是一个数组或连接类型列表。

我们可以在这里得到一些建议吗?

感谢。

1 个答案:

答案 0 :(得分:1)

您可能希望为这些类型创建自己的序列化和反序列化例程。 特别是在使用集合类型及其衍生物时,您可能希望控制(反)序列化过程。

有关如何进行自定义序列化的信息,请访问:http://msdn.microsoft.com/en-us/library/ty01x675(v=vs.80).aspx

使用XML序列化时,您可能还想实现IXmlSerializablehttp://msdn.microsoft.com/en-us/library/system.xml.serialization.ixmlserializable(v=vs.80).aspx

相关问题