似乎无法实施protobuf-net
通过定义其子类型的类的序列化[ProtoInclude]
并实施ProtoBuf.IExtensible
:
[ProtoBuf.ProtoInclude(1000, typeof(DerivedClass))]
public partial class BaseClass : ProtoBuf.IExtensible
{
...
private IExtension extensionObject;
IExtension IExtensible.GetExtensionObject(bool createIfMissing)
{
return Extensible.GetExtensionObject(ref extensionObject, createIfMissing);
}
}
public partial class DerivedClass : BaseClass, ProtoBuf.IExtensible
{
...
private IExtension extensionObject;
IExtension IExtensible.GetExtensionObject(bool createIfMissing)
{
return Extensible.GetExtensionObject(ref extensionObject, createIfMissing);
}
}
var baseObject = new MyClass { ... };
DerivedClass derivedObject;
using (var stream = new MemoryStream())
{
Serializer.Serialize(stream, baseObject); // throws runtime exception
stream.Seek(0, SeekOrigin.Begin);
derivedObject = Serializer.Deserialize<DerivedClass>(stream);
}
尝试序列化会引发运行时异常:
{“结构或类中不支持 IExtensible
遗产”}
在 ProtoBuf.Serializers.TypeSerializer..ctor(TypeModel 模型,类型
forType、Int32[] fieldNumbers、IProtoSerializer[] 序列化器、
MethodInfo[] baseCtorCallbacks,布尔值 isRootType,布尔值
useConstructor、CallbackSet 回调、Type 构造类型、MethodInfo
工厂)
在 ProtoBuf.Meta.MetaType.BuildSerializer()
在 ProtoBuf.Meta.MetaType.get_Serializer()
在 ProtoBuf.Meta.RuntimeTypeModel.Serialize(Int32 键,对象值,
ProtoWriter 目标)
在 ProtoBuf.Meta.TypeModel.SerializeCore(ProtoWriter writer,对象
价值)
在 ProtoBuf.Meta.TypeModel.Serialize(Stream dest, 对象
值、SerializationContext 上下文)
在 ProtoBuf.Serializer.Serialize[T](流目的地,T 实例)
在
...
具体实施的目的是什么IExtensible
?如果不这样做会有什么后果?
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)