TypeModel.Create的作用是什么?

时间:2013-02-16 19:00:33

标签: c# serialization protobuf-net

首先,如果这是一个菜鸟问题,请原谅我 - 但我是protobuf-net的新手。

我注意到有些人在使用TypeModel.Create()进行序列化时使用protobuf-net,而其他人只是直接调用Serializer(意味着使用默认的单例RuntimeTypeModel.Default)。

有什么区别?我会假设如果我一直重复使用相同的RuntimeTypeModel.Default,我会获得一些性能上的好处,但是我还会放弃什么呢?

如果我在调用序列化时已经知道对象的Type,哪种方法更好?

由于

1 个答案:

答案 0 :(得分:2)

K表; Serializer.*上的方法现在主要用作RuntimeTypeModel.Default.*的快捷方式。它们仍然存在的原因有三个:

  • 方便
  • 许多现有的示例代码
  • v1 API兼容性

大多数人只需要一个模型。但是,如果您需要,系统支持具有不同配置的不同并行模型。然而,在大多数不太可能的用法中:它确实使其大大更易于测试,因为我可以简单地使用不同的模型实例来重置整个系统。所以:您可以(如果您愿意,大多数人不会)拥有多个模型实例的原因:

  • 测试,主要是我:)
  • 在不同的布局/版本之间迁移

另外,如果您使用“预编译”功能(主要针对电话设备之类的东西),也会公开TypeModel API。这将生成一个具有自定义模型类型的程序集,可通过以下方式使用:

var serializer = new MyCustomSerializer();

其中MyCustomSerializer : TypeModel - 虽然在这种情况下它不会是RuntimeTypeModel