为什么我不能用结构编写序列化器?

时间:2012-05-05 18:19:12

标签: protobuf-net

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

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

1 个答案:

答案 0 :(得分:1)

公平观察!这是v1的宿醉,其中API仅支持class。 v2实施会添加RuntimeTypeModel,并将旧的Serializer.* API转发到RuntimeTypeMode.Default.*

在这种情况下,答案很简单:因为我没有删除v1天存在的where T : class约束。它将在未来版本中删除。

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

RuntimeTypeModel.Default[type].CompileInPlace();