gpt4 book ai didi

c# - TypeModel.Create 的作用是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 11:08:29 24 4
gpt4 key购买 nike

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

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

有什么区别?我会假设如果我一直重复使用相同的 RuntimeTypeModel.Default,我会获得一些性能优势,但我要放弃什么作为交换?

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

谢谢

最佳答案

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

  • 方便
  • 大量现有示例代码
  • v1 API 兼容性

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

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

顺便说一句,如果您使用“预编译”功能(主要针对电话设备等),TypeModel API 也会暴露。这将生成一个具有自定义模型类型的程序集,可通过以下方式使用:

var serializer = new MyCustomSerializer();

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

关于c# - TypeModel.Create 的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14913947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com