为什么protobuf-net序列化没有atrributes?

时间:2015-06-24 16:28:00

标签: c# .net serialization protocol-buffers protobuf-net

以下是示例:

class A
{
    public int x { get; private set; }

    public A(){}
    public A(int x)
    {
        this.x = x;
    }
}
class Program
{
    static void Main(string[] args)
    {
        A a = new A(1);
        A a1;
        using (FileStream fs = new FileStream("data", FileMode.Create, FileAccess.Write))
        {
            Serializer.Serialize(fs, a);
        }

        using (FileStream fs = new FileStream("data", FileMode.Open, FileAccess.Read))
        {
            a1 = Serializer.Deserialize<A>(fs);
        }
        Console.ReadLine();
    }  
}

A类没有任何属性或合约,但是protobuf-net不会抛出任何异常。为什么? 反序列化后,a1.x包含1。

目标框架是4.5。 Protobuf-net版本为2.0.0.668,与nuget一起安装。

1 个答案:

答案 0 :(得分:0)

这是v2的一项功能,来自the webpage

  

&#34; V2&#34;释放

     

&#34; V2&#34;是允许的核心引擎的重大改革   更大的灵活性,并避免过度使用的一些问题   泛型。它与您现有的数据和电线兼容   旧API仍然存在。简单地说:图书馆更清洁,更精简,   并且对于向前发展而言更加通用。特别是v2   允许:

     
      
  • 允许在更多平台上使用(iOS,WP7,Mono for Android,WinRT等)
  •   
  • 如果您愿意,可以在没有属性的情况下使用
  •   
  • 允许预生成序列化程序集,以在运行时删除所有反射
  •   
  • 并且通常:只是更多功能
  •   

(强调我的)