首先,如果这是一个菜鸟问题,请原谅我 - 但我是protobuf-net
的新手。
我注意到有些人在使用TypeModel.Create()
进行序列化时使用protobuf-net
,而其他人只是直接调用Serializer
(意味着使用默认的单例RuntimeTypeModel.Default
)。
有什么区别?我会假设如果我一直重复使用相同的RuntimeTypeModel.Default
,我会获得一些性能上的好处,但是我还会放弃什么呢?
如果我在调用序列化时已经知道对象的Type
,哪种方法更好?
由于
答案 0 :(得分:2)
K表; Serializer.*
上的方法现在主要用作RuntimeTypeModel.Default.*
的快捷方式。它们仍然存在的原因有三个:
大多数人只需要一个模型。但是,如果您需要,系统支持具有不同配置的不同并行模型。然而,在大多数不太可能的用法中:它确实使其大大更易于测试,因为我可以简单地使用不同的模型实例来重置整个系统。所以:您可以(如果您愿意,大多数人不会)拥有多个模型实例的原因:
另外,如果您使用“预编译”功能(主要针对电话设备之类的东西),也会公开TypeModel
API。这将生成一个具有自定义模型类型的程序集,可通过以下方式使用:
var serializer = new MyCustomSerializer();
其中MyCustomSerializer : TypeModel
- 虽然在这种情况下它不会是RuntimeTypeModel
。