つ
static XElement Serialize(object obj) {
 var serializer = new XmlSerializer(typeof(Foo));
 using (var writer = new StringWriter()) {
  serializer.Serialize(writer, obj);
  return XElement.Parse(writer.ToString());
 }
}
自前でこれを超えるものを作るのは相当大変だよ
汎用性は比べ物にならないし速度も普通にやってたら全く勝ち目無い