public static IKernelEventEnvelope Deserialize(string json) { var jsonObject = JObject.Parse(json); var commandJson = jsonObject[nameof(SerializationModel.command)]; var commandEnvelope = KernelCommandEnvelope.Deserialize(commandJson); var eventJson = jsonObject[nameof(SerializationModel.@event)]; var eventTypeName = jsonObject[nameof(SerializationModel.eventType)].Value <string>(); var eventType = EventTypeByName(eventTypeName); var @event = (KernelEvent)eventJson.ToObject(eventType, Serializer.JsonSerializer); if (@event is {} &&
private async Task DeserializeAndSendCommand(string line) { IKernelCommandEnvelope streamKernelCommand; try { streamKernelCommand = KernelCommandEnvelope.Deserialize(line); } catch (JsonReaderException ex) { WriteEventToOutput( new DiagnosticLogEntryProduced( $"Error while parsing command: {ex.Message}\n{line}")); return; } await _kernel.SendAsync(streamKernelCommand.Command); }
public static IKernelEventEnvelope Deserialize(JsonElement jsonObject) { var commandJson = jsonObject.GetProperty(nameof(SerializationModel.command)); var commandEnvelope = commandJson.ValueKind == JsonValueKind.Null ? null : KernelCommandEnvelope.Deserialize(commandJson); var command = commandEnvelope?.Command; return(DeserializeWithCommand(jsonObject, command)); }
public static IKernelEventEnvelope Deserialize(string json) { var jsonObject = JsonDocument.Parse(json).RootElement; var commandJson = jsonObject.GetProperty(nameof(SerializationModel.command)); var commandEnvelope = commandJson.ValueKind == JsonValueKind.Null ? null : KernelCommandEnvelope.Deserialize(commandJson); var eventJson = jsonObject.GetProperty(nameof(SerializationModel.@event)); var eventTypeName = jsonObject.GetProperty(nameof(SerializationModel.eventType)).GetString(); var eventType = EventTypeByName(eventTypeName); var ctor = eventType.GetConstructors(BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance)[0]; var ctorParams = new List <object>(); foreach (var parameterInfo in ctor.GetParameters()) { if (typeof(KernelCommand).IsAssignableFrom(parameterInfo.ParameterType)) { ctorParams.Add(commandEnvelope == null ? KernelCommand.None: commandEnvelope.Command); } else { ctorParams.Add(eventJson.TryGetProperty(parameterInfo.Name, out var property) ? JsonSerializer.Deserialize(property.GetRawText(), parameterInfo.ParameterType, Serializer.JsonSerializerOptions) : GetDefaultValueForType(parameterInfo.ParameterType)); } } var @event = (KernelEvent)ctor.Invoke(ctorParams.ToArray()); return(Create(@event)); }
public static IKernelEventEnvelope Deserialize(string json) { var jsonObject = JsonDocument.Parse(json).RootElement; var commandJson = jsonObject.GetProperty(nameof(SerializationModel.command)); var commandEnvelope = commandJson.ValueKind == JsonValueKind.Null ? null : KernelCommandEnvelope.Deserialize(commandJson); var command = commandEnvelope?.Command; return(DeserializeWithCommand(json, command)); }