以下是示例:
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一起安装。
答案 0 :(得分:0)
这是v2的一项功能,来自the webpage
&#34; V2&#34;释放
&#34; V2&#34;是允许的核心引擎的重大改革 更大的灵活性,并避免过度使用的一些问题 泛型。它与您现有的数据和电线兼容 旧API仍然存在。简单地说:图书馆更清洁,更精简, 并且对于向前发展而言更加通用。特别是v2 允许:
- 允许在更多平台上使用(iOS,WP7,Mono for Android,WinRT等)
- 如果您愿意,可以在没有属性的情况下使用
- 允许预生成序列化程序集,以在运行时删除所有反射
- 并且通常:只是更多功能
(强调我的)