XML へのシリアル化の問題は、シリアル化されるクラスが変更された場合 (新しいプロパティ)、xml を使用してそのクラスのインスタンスを再作成できないことです。
クラスがかなり単純な場合 (またはそうでない場合でも)、手動で行うことができます。
XmlDocument doc = new XmlDocument();
XmlNode root = doc.CreateNode(XmlNodeType.Element,"root")
doc.AppendChild(root)
XmlNode newPage = doc.CreateNode(XmlNodeType.Element,"pattern")
root.AppendChild(newPage)
newPage.Attributes.Append(doc.CreateAttribute("Name",pattern.Name)
foreach (Hole h in pattern.Holes)
{
XmlNode hole = doc.CreateNode(XmlNodeType.Element,"hole")
hole.Attributes.Append(doc.CreateAttribute("XCoord",h.Xcoord)
hole.Attributes.Append(doc.CreateAttribute("YCoord",h.Ycoord)
newPage.AppendChild(hole)
}
// etc
doc.Save("output.xml")
このコードはラフですが、次のようなコードが生成されます。
<root>
<pattern name="Pattern1">
<hole XCoord="100" YCoord="50" />
</pattern>
</root>