【C#】シリアライズ/デシリアライズ (Serialize/Deserialize)
シリアライズ / デシリアライズあるクラスから生成したオブジェクトを... ■シリアライズ(シリアル化) => ファイルなどに保存できる形式に変換すること ■デシリアライズ(逆シリアル化) => ファイルなどから復元できる形式に変換すること 実現方法DataContractSerializerを使えば実現可能。(.NET3.0から)
[1] 「System.Runtime.Serialization」を参照追加する
[2] シリアル化する対象のクラスとその属性に、
「DataContract」、「DataMember」を以下のサンプルのように各々付加させる
サンプル[DataContract]
public class Person
{
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
public Person(string newName, int newAge)
{
this.Name = newName;
this.Age = newAge;
}
}
public static T Copy<T>(T source) where T : class
{
T result = null;
using (var ms = new System.IO.MemoryStream())
{
// Serializer the User object to the stream.
DataContractSerializer ser = new DataContractSerializer(typeof(T));
ser.WriteObject(ms, source);
ms.Position = 0;
result = ser.ReadObject(ms) as T;
}
return result;
}
サンプルシリアライズpublic static Stream Serialize<T>(T target)
{
var formatter = new BinaryFormatter();
var stream = new MemoryStream();
formatter.Serialize(stream, target);
stream.Seek(0, SeekOrigin.Begin);
return stream;
}
サンプルデシリアライズpublic static T Deserialize<T>(Stream target)
{
var formatter = new BinaryFormatter();
T returnValue = (T) formatter.Deserialize(target);
return returnValue;
}
参考文献http://gushwell.ldblog.jp/archives/50820429.htmlhttp://msdn.microsoft.com/ja-jp/library/aa904194.aspx http://d.hatena.ne.jp/hilapon/20120301/1330569751 |
「C#・中級編」書庫の記事一覧
-
2013/5/29(水) 午後 11:14
-
2013/4/12(金) 午後 11:19
-
2012/10/27(土) 午後 10:29
-
2012/9/25(火) 午前 1:01
-
2012/8/8(水) 午後 10:48
-
2012/7/23(月) 午後 10:46
-
2012/4/18(水) 午後 10:45