public void Write(object value, ProtoWriter dest) { if (isRootType) { Callback(value, TypeModel.CallbackType.BeforeSerialize); } // write inheritance first IProtoSerializer next = GetMoreSpecificSerializer(value); if (next != null) { next.Write(value, dest); } // write all actual fields //Helpers.DebugWriteLine(">> Writing fields for " + forType.FullName); for (int i = 0; i < serializers.Length; i++) { IProtoSerializer ser = serializers[i]; if (ser.ExpectedType == forType) { //Helpers.DebugWriteLine(": " + ser.ToString()); ser.Write(value, dest); } } //Helpers.DebugWriteLine("<< Writing fields for " + forType.FullName); if (isExtensible) { ProtoWriter.AppendExtensionData((IExtensible)value, dest); } if (isRootType) { Callback(value, TypeModel.CallbackType.AfterSerialize); } }
private static void Write(ActiveCodeReq activeCodeReq, ProtoWriter protoWrite) { long accountId = activeCodeReq.AccountId; if (accountId != 0) { // Variant可变的 ProtoWriter.WriteFieldHeader(1, WireType.Variant, protoWrite); ProtoWriter.WriteInt64(accountId, protoWrite); } string activeCode = activeCodeReq.ActiveCode; if (!string.IsNullOrEmpty(activeCode)) { ProtoWriter.WriteFieldHeader(2, WireType.String, protoWrite); ProtoWriter.WriteString(activeCode, protoWrite); } ProtoWriter.AppendExtensionData(activeCodeReq, protoWrite); }
public void Write(object value, ProtoWriter dest) { var token = ProtoWriter.StartSubItem(value, _prefixLength, dest); if (_isRootType) { Callback(value, TypeModel.CallbackType.BeforeSerialize, dest.Context); } // write inheritance first IProtoSerializerWithWireType next; int fn; if (GetMoreSpecificSerializer(value, out next, out fn)) { ProtoWriter.WriteFieldHeaderBegin(fn, dest); next.Write(value, dest); } // write all actual fields //Helpers.DebugWriteLine(">> Writing fields for " + forType.FullName); for (int i = 0; i < _serializers.Length; i++) { IProtoSerializer ser = _serializers[i]; if (ser.ExpectedType == ExpectedType) { ProtoWriter.WriteFieldHeaderBegin(_fieldNumbers[i], dest); //Helpers.DebugWriteLine(": " + ser.ToString()); ser.Write(value, dest); } } //Helpers.DebugWriteLine("<< Writing fields for " + forType.FullName); if (_isExtensible) { ProtoWriter.AppendExtensionData((IExtensible)value, dest); } if (_isRootType) { Callback(value, TypeModel.CallbackType.AfterSerialize, dest.Context); } ProtoWriter.EndSubItem(token, dest); }
public void Write(object value, ProtoWriter dest) { if (isRootType) { Callback(value, TypeModel.CallbackType.BeforeSerialize, dest.Context); } GetMoreSpecificSerializer(value)?.Write(value, dest); for (int i = 0; i < serializers.Length; i++) { IProtoSerializer protoSerializer = serializers[i]; if (protoSerializer.ExpectedType == forType) { protoSerializer.Write(value, dest); } } if (isExtensible) { ProtoWriter.AppendExtensionData((IExtensible)value, dest); } if (isRootType) { Callback(value, TypeModel.CallbackType.AfterSerialize, dest.Context); } }