あなたが知りたいのはBinary Serializationのようです。リンクから;
シリアル化は、オブジェクトの状態をストレージ メディアに保存するプロセスとして定義できます。このプロセス中に、オブジェクトの public フィールドと private フィールド、および class の名前 (クラスを含むアセンブリを含む)が bytes のストリームに変換され、データ ストリームに書き込まれます。その後、オブジェクトが逆シリアル化されると、元のオブジェクトの正確なクローンが作成されます。
C# のバイナリ シリアル化 (.NET Framework 4.5 を対象) のより具体的な例については、こちらを参照してください。簡単な概要; シリアル化および逆シリアル化するクラスに [Serializable] タグで注釈を付けてから、Formatter インスタンスを使用して実際にシリアル化/逆シリアル化を行う必要があります。
したがって、Perl では次のように簡単に言うことができます。
pack TEMPLATE,LIST
C# では、次のものが必要です。
[Serializable]
public class MyObject {
public int n1 = 0;
public int n2 = 0;
public String str = null;
}
// ... And in some other class where you have you application logic
public void pack()
{
MyObject obj = new MyObject();
obj.n1 = 1;
obj.n2 = 24;
obj.str = "Some String";
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, obj);
stream.Close();
}
シリアライゼーション テンプレートを制御したいという考えに対処するには、おそらく ISerializable を自分で実装する必要があります。これは、カスタム バイナリ シリアル化に関する MSDN の記事です。インターフェースを自分で実装することにより、機能を確保する際の複雑さが大幅に増す代わりに、バイナリ テンプレートを非常に高度に制御できます。