public IMessage DeserializeMessage(string json, Type messageType) { var reader = new JsonTextReader(new StringReader(json)); var propA = ""; var correlationId = Guid.Empty; var causationId = Guid.Empty; WoftamCommand sourceCommand = null; while (reader.Read()) { if (reader.TokenType == JsonToken.PropertyName) { if (reader.Value.ToString() == nameof(PropertyA)) { reader.Read(); propA = reader.Value.ToString(); } else if (reader.Value.ToString() == "CorrelationId") { reader.Read(); correlationId = Guid.Parse(reader.Value.ToString()); } else if (reader.Value.ToString() == "CausationId") { reader.Read(); causationId = Guid.Parse(reader.Value.ToString()); } else if (reader.Value.ToString() == "SourceCommand") { reader.Read(); var serializer = new JsonSerializer(); sourceCommand = serializer.Deserialize <WoftamCommand>(reader); break; } } } if (sourceCommand is null) { throw new JsonSerializationException("Could not deserialize WoftamCommandResponse."); } var response = new WoftamCommandResponse(sourceCommand, propA); if (correlationId != Guid.Empty) { response.CorrelationId = correlationId; } if (causationId != Guid.Empty) { response.CausationId = causationId; } return(response); }
public WoftamCommandResponse(WoftamCommand source, string propertyA) : base(source) { PropertyA = propertyA; }