2

Protobuf-Net 2.0.0.480 可以使用DataContractorProtoContract属性序列化结构,并且这样做很好。

但是,Serializer.PrepareSerializer<MyStruct>()声明MyStruct必须是引用类型。为什么会存在这种限制?

4

1 回答 1

1

公平观察!这是 v1 的遗留问题,其中 API 仅支持class. v2 实现添加RuntimeTypeModel并将旧Serializer.*API 转发到RuntimeTypeMode.Default.*.

在这种情况下,答案很简单:因为我没有删除where T : class从 v1 开始就存在的约束。它将在未来的构建中删除。

目前,您还可以通过以下方式执行此操作:

RuntimeTypeModel.Default[type].CompileInPlace();
于 2012-05-07T08:16:32.823 回答