C#でシリアライズ

シリアライズに関係する名前空間にはSystem.Runtime.SerializationおよびSystem.Xml.Serializationがあるんだけど、このふたつがみごとに無関係。前者でシリアライズするにはSerializable属性およびISerializableインタフェースをクラスにくっつけてやる必要があるけど、後者ではIXmlSerializableおよびXmlElementAttributeがどうのこうの。ひどいねー。