我正在使用 protobuf-net(版本 2.0.0.621)并且在序列化 List 类型时遇到问题,其中 T 是我自己的类(它包含什么并不重要)并且为 T 设置了一个代理项。
代理设置如下:
ProtoBuf.Meta.RuntimeTypeModel.Default.Add(typeof(MyClass), false).SetSurrogate(typeof(MyClassSurrogate));
我的课:
public class MyClass
{
public int Number { get; set; }
}
[ProtoContract]
MyClassSurrogate
{
[ProtoMember(1)]
public int Number { get; set; }
}
然后我创建一个 MyClass 实例类型的通用列表,用项目填充它并像这样序列化它:
ProtoBuf.Serializer.Serialize(stream, list);
问题发生在反序列化上,我在隐式运算符转换中的代理项中不断得到“null”:
static public implicit operator MyClassSurrogate(MyClass myClass)
那么“myClass”为空。
如果我删除代理并使用 proto 属性装饰 MyClass ,一切正常。
你能告诉我我做错了什么吗?
谢谢。