我在 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; }
}
它按预期工作。