これはあなたがそれを始めるのを助ける必要があります:Source&Credit&Marc Gravell
始める最も簡単な方法は、単にデータを書き込むことです。
class Person {
public int Id {get;set;}
public string Name {get;set;}
public Address Address {get;set;}
}
class Address {
public string Line1 {get;set;}
public string Line2 {get;set;}
}
これは良いスタートですが、protobuf-netだけでは十分ではありません。XmlSerializerとは異なり、メンバー名はデータにエンコードされません。代わりに、各メンバーを識別するために整数を選択する必要があります。さらに、意図を示すには、このタイプがシリアル化されることを意図していることを示す必要があります(つまり、データコントラクトである)。
[ProtoContract]
class Person {
[ProtoMember(1)]
public int Id {get;set;}
[ProtoMember(2)]
public string Name {get;set;}
[ProtoMember(3)]
public Address Address {get;set;}
}
[ProtoContract]
class Address {
[ProtoMember(1)]
public string Line1 {get;set;}
[ProtoMember(2)]
public string Line2 {get;set;}
}
「プロトコルバッファ」はバイナリ形式であるため、protobuf-netはStreamクラスに大きく基づいています。これにより、さまざまな実装で簡単に使用できます。たとえば、ファイルに書き込むには:
var person = new Person {
Id = 12345, Name = "Fred",
Address = new Address {
Line1 = "Flat 1",
Line2 = "The Meadows"
}
};
using (var file = File.Create("person.bin")) {
Serializer.Serialize(file, person);
}
これにより、32バイトのファイルが「person.bin」に書き込まれます。上記では明らかではないかもしれませんが、Serializeは一般的なメソッドです-行は次のようにもなります:
using (var file = File.Create("person.bin")) {
Serializer.Serialize<Person>(file, person);
}
しかし、ほとんどの場合、コンパイラのジェネリック型推論に作業を任せることができます。データの逆シリアル化
また、データを取り戻す必要があります。
Person newPerson;
using (var file = File.OpenRead("person.bin")) {
newPerson = Serializer.Deserialize<Person>(file);
}
これにより、「person.bin」からデータが読み戻されます。今回はタイプ()を指定する必要がありますが、それ以外のコードは非常に似ています。
更新:このパッケージをダウンロード