0

我在反序列化方面遇到问题。想象一下,我们正在创建一个允许绘制线条的绘图应用程序。我们有一个类负责绘制线条的方法,所以我们称之为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;
   }
}

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

'向'OurProjectNameSpace.Connections'类型的集合添加值引发了异常。'

我的同事解释说,这是由于从“连接”转换为“连接”,这是有道理的。请记住,Connections 是 Connection 类型的数组或列表。

我们可以在这里提个醒吗?

谢谢。

4

1 回答 1

1

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

可以在此处找到有关如何进行自定义序列化的信息:http: //msdn.microsoft.com/en-us/library/ty01x675 (v=vs.80).aspx

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

于 2012-10-31T07:34:04.847 回答