目前,我们定义了几个包含System.Type字段/属性的消息。 protobuf-net处理System.Type的内置行为在很多情况下都很好,但在我们的情况下无法使用:我们确实希望类型序列化其全名,但需要按名称控制查找。
我无法为此找到合适且有效的解决方案。一方面,有excellent answer解释了如何为System.Type注册代理,但不幸的是,它似乎不再起作用,因为抛出了System.Argument异常“这类数据有内置行为,无法以这种方式添加到模型中:System.Type“。
另一方面,存在“TypeModel.DynamicTypeFormatting”事件,在以下情况下似乎不会调用该事件:
[ProtoContract]
public class Foo { [ProtoMember] public List<Type> Types; }
目前是否有办法快速解决此问题,而无需发送带有quickfix的自定义版本?
答案 0 :(得分:0)
结果我在错误的TypeModel实例上注册了DynamicTypeFormatting事件:
var model = TypeModel.Create();
model.DynamicTypeFormatting += Callback;
var compiledModel = model.Compile();
compiledModel.Deserialize();this is a completely different instance
不会工作,因为我需要在&#39; compiledModel&#39;上注册回调。代替。修复这个小错误最终允许我自定义反序列化时执行类型查找的方式。