DataContractSerializer の使い方

WCF ではサービスを呼び出す際、DataContractSerializer を使って、渡すデータをシリアル化しています。

DataContractSerializer はインスタンス化可能なので、自分でシリアル化・逆シリアル化をすることも、まあ可能です。

DataContractSerializer を使ったサンプルコードは次の通り。

public static string Serialize<T>(T obj)
{
    StringBuilder buffer = new StringBuilder();
    using (XmlWriter writer = XmlWriter.Create(buffer))
    {
        DataContractSerializer serializer = new DataContractSerializer(typeof(T));
        serializer.WriteObject(writer, obj);
    }
    return buffer.ToString();
}

public static T Deserialize<T>(string s)
{
    using (StringReader text = new StringReader(s))
    using (XmlReader reader = XmlReader.Create(text))
    {
        DataContractSerializer serializer = new DataContractSerializer(typeof(T));
        return (T)serializer.ReadObject(reader);
    }
}

あらかじめ DataContractSerializer を使ってシリアル化しておき、サービスに文字列として渡すようにすれば、何でも受け取れるサービスが作れそう。作る意味はほとんど無いですけど。