NuGet (2.0.0.480) で ProtoBuf の最新バージョンを使用していますが、DataContract
/DataMember
属性でマークされた型をシリアル化しません。
[DataContract]
public class Person
{
[DataMember]
public string Firstname { get; set; }
}
class Program
{
static void Main(string[] args)
{
var outputFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "person.dat");
var person = new Person { Firstname = "ben" };
using (var fs = new FileStream(outputFile, FileMode.OpenOrCreate)) {
Serializer.Serialize(fs, person);
}
using (var fs = File.OpenRead(outputFile))
{
var result = Serializer.Deserialize<Person>(fs);
Console.WriteLine(result.Firstname);
}
Console.ReadLine();
}
}
ただし、ProtoBuf 固有の属性を使用してクラスを装飾すると、次のようになります。
[ProtoContract]
public class Person
{
[ProtoMember(1)]
public string Firstname { get; set; }
}
期待どおりに動作します。