デシリアライズに問題があります。線を描画できる描画アプリケーションを作成していると想像してください。線の描画メソッドを担当するクラスがあるので、それを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 タイプの配列またはリストであることに注意してください。
ここで頭を下げてもいいですか?
ありがとう。