スポンサーサイト
新しい記事を書く事で広告が消せます。
情報処理技術全般を気まぐれにつつくゆるいブログです。技術解説記事のソースは専門書と実務経験です。
/*----------------------------------------------------
*
* SOAP形式でシリアル化する。
*
----------------------------------------------------*/
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Soap;
//シリアル化するオブジェクトに属性を指定
[Serializable]
class Sample
{
public int X { get; set; }
public int Y { get; set; }
//シリアル化しない
[NonSerialized]
public readonly int Z = 0;
public override string ToString( )
{
return String.Format( "X:{0}, Y:{1}",
this.X, this.Y );
}
static void Main( )
{
string name = "Sample.data";
var formatter = new SoapFormatter();
Serialize( formatter, name );
Deserialize( formatter, name );
Console.ReadLine();
}
//シリアライズ
private static void Serialize( SoapFormatter formatter, string name )
{
//処理開始
Console.WriteLine( "オブジェクトをシリアライズします・・・" );
//データを用意
var data = new Sample();
data.X = 100;
data.Y = 100;
Console.WriteLine( "データの内容\n{0}",
data.ToString() );
//保存先を用意
var file = new FileInfo( name );
FileStream stream = file.Open(
FileMode.OpenOrCreate,
FileAccess.ReadWrite,
FileShare.Delete );
//バイナリフォーマッタでシリアライズする
formatter.Serialize( stream, data );
stream.Close();
//処理終了
Console.WriteLine( "シリアライズ完了しました♪" );
Console.WriteLine();
}
//デシリアライズ
private static void Deserialize( SoapFormatter formatter, string name )
{
//処理開始
Console.WriteLine( "オブジェクトをデシリアライズします・・・" );
//保存先を再度オープンしてデシリアル化する
var file = new FileInfo( name );
FileStream stream = file.Open(
FileMode.OpenOrCreate,
FileAccess.ReadWrite,
FileShare.Delete );
Sample data =
( Sample ) formatter.Deserialize( stream );
Console.WriteLine( "データの内容\n{0}",
data.ToString() );
//後片付け
file.Delete();
//処理終了
Console.WriteLine( "デシリアライズ完了しました♪" );
Console.WriteLine();
}
}