为什么protobuf网络在没有atrributes的情况下进行序列化
本文关键字:情况下 序列化 atrributes protobuf 网络 为什么 | 更新日期: 2023-09-27 17:59:22
以下是示例:
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网络版本为2.0.0.668,安装了nuget。
这是v2的一个功能,来自网页
"v2"已发布
"v2"是对核心发动机的一次重大检修,以允许更大的灵活性,避免了过度使用带来的许多问题仿制药。它与现有数据有线兼容旧的API仍然存在。简单地说:图书馆更干净、更精简,并且对于以后的开发来说更加通用。特别是v2允许:
- 允许在更多平台上使用(iOS、WP7、Android版Mono、WinRT等)
- 如果您愿意,允许在没有属性的情况下使用
- 允许预生成序列化程序集,以便在运行时删除所有反射
- 一般来说:只是更多的功能
(强调矿)