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(); } }