C#::XML

XMLでデータをやり取りするとき、C#側のアプリはXMLSerializer使えば楽だよね!という話を以前(id:lord_hollow:20091203#p1)書いたけれども、「狙ったXMLを出力するクラス構成を一発で書いてやるぜ!」と息巻いてコードを書いたのに間違ってしまって悔しかったので晒し上げ。
ミスった内容:配列の各要素の要素名を要素のクラスのXmlType属性で指定しようとした。
つまり、本来は↓のようにすべきだったところを、

public class Define
{
  [XmlElement("port")]
  public List<Port> Ports{get; set;}
}
public class Port { ... }

↓のようにしてしまったことで、port要素として出力すべきところをPorts要素として出力してしまったのでした!

public class Define
{
  public List<Port> Ports{get; set;}
}
[XmlType("port")]
public class Port { ... }

まぁ、Portsの型はあくまでも"List"であって"Port"じゃないんだから当たり前だよな!