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