Serialize objects in file with protobuf in C#
Install-Package protobuf-net
Decorate your classes
[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;}
}
Serialize your data
var person = new Person {
Id = 12345, Name = "Fred",
Address = new Address {
Line1 = "Flat 1",
Line2 = "The Meadows"
}
};
using(var file = new FileStream(path, FileMode.Truncate)) {
Serializer.Serialize(file, person);
file.SetLength(file.Position);
}
if (!File.Exists(Statics.UserProtobufFile))
{
using (var file = new FileStream(Statics.UserProtobufFile, FileMode.Create))
{
Serializer.Serialize(file, Statics.User);
file.SetLength(file.Position);
}
}
else
{
using (var file = new FileStream(Statics.UserProtobufFile, FileMode.Truncate))
{
Serializer.Serialize(file, Statics.User);
file.SetLength(file.Position);
}
}
Deserialize your data
Person newPerson;
using (var file = File.OpenRead("person.bin")) {
newPerson = Serializer.Deserialize<Person>(file);
}
References
https://github.com/protobuf-net/protobuf-net
https://stackoverflow.com/questions/20369302/how-to-serialize-several-objects-in-one-file-in-c-sharp-with-protobuf
https://stackoverflow.com/questions/2152978/using-protobuf-net-i-suddenly-got-an-exception-about-an-unknown-wire-type