Animatroller.ExpanderCommunication.BaseConnectionManager.DeserializeInternalMessage C# (CSharp) Method

DeserializeInternalMessage() private method

private DeserializeInternalMessage ( string data ) : BaseMessage
data string
return Animatroller.ExpanderCommunication.Model.BaseMessage
        internal Model.BaseMessage DeserializeInternalMessage(string data)
        {
            var jObject = JObject.Parse(data);
            var msgTypeNode = jObject.SelectToken("Type");
            if (msgTypeNode == null)
                throw new ArgumentException("Missing message type");

            var settings = new JsonSerializerSettings
            {
                Converters = new List<JsonConverter>
                {
                    new StringEnumConverter()
                }
            };

            var jsonSerializer = JsonSerializer.Create(settings);

            var msgType = msgTypeNode.ToObject<Model.BaseMessage.MessageTypes>(jsonSerializer);
            switch (msgType)
            {
                case Model.BaseMessage.MessageTypes.Connect:
                    return jObject.ToObject<Model.ConnectMessage>(jsonSerializer);

                case Model.BaseMessage.MessageTypes.Alive:
                    return jObject.ToObject<Model.AliveMessage>(jsonSerializer);

                case Model.BaseMessage.MessageTypes.Payload:
                    return jObject.ToObject<Model.PayloadMessage>(jsonSerializer);

                default:
                    throw new ArgumentException("Unknown message type " + msgType.ToString());
            }
        }