servicestack ServiceStack ProtoBuff序列化到自定义流,servicestack,protocol-buffers,servicestack,Protocol Buffers" /> servicestack ServiceStack ProtoBuff序列化到自定义流,servicestack,protocol-buffers,servicestack,Protocol Buffers" />

servicestack ServiceStack ProtoBuff序列化到自定义流

servicestack ServiceStack ProtoBuff序列化到自定义流,servicestack,protocol-buffers,servicestack,Protocol Buffers,几天前,我发布了一个关于使用BinaryFormatter序列化ResponseStatus属性的问题。Mythz指出,这不是最快的方式,所以我决定切换到另一个格式化程序。试过ProtoBuff和MsgPack,我现在在ProtoBuf上 我真正的问题是:我试图理解Protobuf如何知道ServiceStack Dto应该如何序列化。我尝试向现有dto、ProtoContract和ProtoMember(0、1、2、3等)以及DataContract和DataMember添加所有可能的属性 除

几天前,我发布了一个关于使用BinaryFormatter序列化ResponseStatus属性的问题。Mythz指出,这不是最快的方式,所以我决定切换到另一个格式化程序。试过ProtoBuff和MsgPack,我现在在ProtoBuf上

我真正的问题是:我试图理解Protobuf如何知道ServiceStack Dto应该如何序列化。我尝试向现有dto、ProtoContract和ProtoMember(0、1、2、3等)以及DataContract和DataMember添加所有可能的属性

除此之外,我不使用ServiceStack自己的客户端,而是尝试将请求序列化到现有流

如果我不这样做:

ServiceStack.ProtoBuf.ProtoBufFormat.Model.Add (typeof(NameSpacePlaceholder.Service.Dto.GetNodes), false);
我得到了一个关于无法推断的类型和合同的错误, 如果我添加了这段代码,一切都会继续进行,但是反序列化的对象是空的

我正在使用此命令序列化:

ServiceStack.ProtoBuf.ProtoBufFormat.Model.Serialize (ms, myObject);
ServiceStack.ProtoBuf.ProtoBufFormat.Model.Deserialize (ms, null, deserializationType);
以及反序列化:

ServiceStack.ProtoBuf.ProtoBufFormat.Model.Serialize (ms, myObject);
ServiceStack.ProtoBuf.ProtoBufFormat.Model.Deserialize (ms, null, deserializationType);
我想我遗漏了什么。它可能与名称空间有关吗?我查看了ServiceStack.ProtoBuff中的一些代码,它并不难理解,但我无法理解

我现在还不清楚的事情:

  • 是否需要向现有DTO添加属性?(在ProtoBuf V2中,我也可以在代码中执行,我阅读了,但现在我还可以更改现有的DTO)
  • 我是否需要在客户端(序列化)和服务器(反序列化)中初始化请求(和响应)DTO
  • 有什么原因不应该序列化到我自己的流吗

  • 非常感谢,

    我讨厌自己发布答案,这意味着我一开始搜索不够

    我了解到以下属性非常重要:

  • [原始合同]
  • [原成员(X)]
  • [ProtoInclude(X,typeof(派生类))]
  • 现在我学到了一些新东西:为什么DTO中的类继承是不可取的

    我现在已经准备好了,我会努力让它变得真实友好