.NET でオブジェクトを XML にシリアライズする方法

これは超有名。Web で調べるとすぐに出てくる。.NET でデータをいじる分散アプリを作る人であれば結構知っている。
なお、この方法ではクラスの public フィールド、または public プロパティしかシリアライズできないので注意。
private なフィールドを含めて内部データをそのままとっておける SoapFormatter や BinaryFormatter というのもあるが、SoapFormatter はジェネリックスや Hashtable のようなデータがある場合は使えず、BinaryFormatter はよくわからないバイナリデータがべろべろーと出てきて、他のアプリケーションで読めない。

public static byte[] ObjectToXml(object o, Type t)
{
	MemoryStream ms = new MemoryStream();
	XmlSerializer x = new XmlSerializer(t);
	x.Serialize(ms, o);
	return ms.ToArray();
}