예제 #1
0
            override public void ReadMember(ProtobufferReaderCSLS _reader)
            {
                int bytes = (int)_reader.ReadUInt32Variant(false);

                byte[] tbytearry = _reader.ReadBytes(bytes);
                if (tbytearry != null)
                {
                    ProtobufferReaderCSLS treader = new ProtobufferReaderCSLS(tbytearry, bytes);
                    int tfieldnumber = treader.ReadFieldHeader();
                    while (tfieldnumber > 0)
                    {
                        if (!Members.ContainsKey(tfieldnumber))
                        {
                            throw new InvalidOperationException("ProtoReaderMemberObject 未能从builder中找到对应的字段 fieldnumber:" + tfieldnumber);
                        }
                        BuilderObjectBase tprb = Members[tfieldnumber];
                        tprb.ReadMember(treader);
                        tfieldnumber = treader.ReadFieldHeader();
                    }
                }
            }
            private void BuildMember()
            {
                IType[] ttypes = mCodeTool.GetFieldTypes(mScriptType);
                int     tindex = 1;

                for (int i = 0; i < ttypes.Length; i++)
                {
                    BuilderObjectBase tobj = BuilderObjectBase.GetMember(mCodeTool, ttypes[i], i, tindex++, mScriptObject, mScriptType);
                    AddMember(tobj);
                }

                int tfieldnumber = mReader.ReadFieldHeader();

                while (tfieldnumber > 0)
                {
                    if (!Members.ContainsKey(tfieldnumber))
                    {
                        throw new InvalidOperationException("ProtoReaderMemberObject 未能从builder中找到对应的字段 fieldnumber:" + tfieldnumber);
                    }
                    BuilderObjectBase tprb = Members[tfieldnumber];
                    tprb.ReadMember(mReader);
                    tfieldnumber = mReader.ReadFieldHeader();
                }
            }