在protobuf-net中,Add
中的ProtoBuf.Meta.RuntimeTypeModel
方法有两个参数,一个System.Type
和一个布尔applyDefaultBehaviour
- 布尔值有什么作用?它如何影响事物?我什么时候需要传递真/假?
xml doc说:
Whether to apply the inbuilt configuration patterns (via attributes etc), or
just add the type with no additional configuration (the type must then be manually configured)
这对我来说还不够理解,也许只是我...
感谢您的帮助。
答案 0 :(得分:2)
如果您通过false
,那么protobuf-net将执行 nothing 来配置该类型。它不会看属性,它不会寻找常见的模式。它会推断您想要自己完成所有这些,构建一个自定义模型(可能是出于版本控制的原因,或者因为类型超出了您的控制范围,并且具有混淆protobuf-net的属性)。
基本上,除非你知道自己在做什么,否则通过true
; p
继续评论:我强烈建议您只需交换到单独的DTO模型。序列化数据,而不是实现。只要我听到" Unity3D课程",我的默认值是" 可能不是最好的选择。
但是作为手动配置的一个例子,如果SomeType
(属于统一)无法序列化,这是一个方便的技巧:
var metaType = model.Add(typeof(SomeType), false);
metaType.SetSurrogate(typeof(MyDTOThatLooksLikeSomeType));
其中MyDTOThatLooksLikeSomeType
是具有属性等的常规DTO,但是 protobuf-net friendly(只是常规序列化属性),还有转换运算符到/来自{{1} }。或者你可以手动做事:
SomeType