// PersistentPayload private CustomSerialization.Protobuf.Msg.PersistentPayload PersistentPayloadBuilder(object payload) { var persistentPayload = new CustomSerialization.Protobuf.Msg.PersistentPayload(); if (payload == null) { return(persistentPayload); } var serializer = system.Serialization.FindSerializerFor(payload); if (serializer is SerializerWithStringManifest serializerManifest) { var manifest = serializerManifest.Manifest(payload); if (!manifest.Equals(Persistent.Undefined)) { persistentPayload.MessageManifest = ByteString.CopyFromUtf8(manifest); } } else { if (serializer.IncludeManifest) { persistentPayload.MessageManifest = ByteString.CopyFromUtf8(payload.GetType().TypeQualifiedName()); } } persistentPayload.Message = ByteString.CopyFrom(serializer.ToBinary(payload)); persistentPayload.SerializerId = serializer.Identifier; return(persistentPayload); }
private object PayloadFromProto(CustomSerialization.Protobuf.Msg.PersistentPayload persistentPayload) { return(system.Serialization.Deserialize( persistentPayload.Message.ToByteArray(), persistentPayload.SerializerId, persistentPayload.MessageManifest.ToStringUtf8())); }