Protobuf-Net 2.0.0.480可以使用DataContract
或ProtoContract
属性序列化结构,并且这样做很好。
但是,Serializer.PrepareSerializer<MyStruct>()
声称MyStruct
必须是引用类型。为什么存在这种限制?
答案 0 :(得分:1)
公平观察!这是v1的宿醉,其中API仅支持class
。 v2实施会添加RuntimeTypeModel
,并将旧的Serializer.*
API转发到RuntimeTypeMode.Default.*
。
在这种情况下,答案很简单:因为我没有删除v1天存在的where T : class
约束。它将在未来版本中删除。
目前,您还可以通过以下方式执行此操作:
RuntimeTypeModel.Default[type].CompileInPlace();