Serialization Protobuf网络扩展接口

Serialization Protobuf网络扩展接口,serialization,protocol-buffers,protobuf-net,Serialization,Protocol Buffers,Protobuf Net,我在理解protobuf网络扩展以及它们到底是如何工作的方面存在问题。我需要序列化一个2D自定义类数组,因此我决定将其封装到一个类中,如下所示: class CustomData : IExtension { private CustomClass[,] data; public CustomClass this[int index_X, int index_Y] { get {

我在理解protobuf网络扩展以及它们到底是如何工作的方面存在问题。我需要序列化一个2D自定义类数组,因此我决定将其封装到一个类中,如下所示:

class CustomData : IExtension
{
     private CustomClass[,] data;
     public CustomClass this[int index_X, int index_Y]
      {
                get 
                {
                    return data[index_X, index_Y];
                }
                set
                {
                    data[index_X, index_Y] = value;
                }
            }

        public Stream BeginQuery()
        {
            var stream = new MemoryStream();

            int pos = 0;
            byte[] packedData = SomeStaticClass.ConvertToByteArray(data)

            using(var writer = new ProtoWriter(stream, null, null))
            {
                ProtoWriter.WriteFieldHeader(1, WireType.String, writer);
                ProtoWriter.WriteBytes(packedData, writer);
            } 

            return stream;
        }

        public void EndQuery(Stream stream)
        {
            stream.Close();
        }

     //... and the other 3 implemented funcs from IExtension
}
这当然是在一个自定义IEExtensible中,它有GetExtensionObject()返回CustomData对象的实例。当我尝试将扩展数据附加到实例时,问题就出现了。以下是我正在做的:

public void DoAppend()
{
        var stream = new MemoryStream();

        using (ProtoWriter writer = new ProtoWriter(stream, null, null))
        {
            var test = new CustomExtensibleClass(300, 300);

            ProtoWriter.AppendExtensionData(test, writer);
        }

        var result = stream.ToArray();
}
问题是“结果”不包含任何数据。我希望通过BeginQuery()附加和写入的数据将被传输到原编写器的流中,但我认为情况并非如此


有人能解释一下我做错了什么,或者至少是如何使用附加的数据吗?

这是v1还是v2?它应该在v1中工作。。。在v2中,扩展部分是极少数剩余的不完整部分之一(与GetProto一起)。正在进行中…这是v2,我想这可以消除它。我将尝试另一种方法。谢谢你的帮助。这是非常短期的路线图;问题是:我每天都有有限的时间