private static StoreMessage ParseStoreMessage(string dataFromClient) { var parts = dataFromClient.Split(new char[] { '@' }, StringSplitOptions.RemoveEmptyEntries); var i = 0; var storeMessage = new StoreMessage(); foreach (var part in parts) { if (i == 0) { storeMessage.Location = part; } else if (i == 1) { i++; continue; // part == "Store" (function name) } else { if (int.TryParse(part, out int messageNumber)) // last part, containing count { storeMessage.MessageNumber = messageNumber; } else // actual passing { storeMessage.Passings.Add(Passing.Parse(part)); } } i++; } return(storeMessage); }