public static void TryParse(byte[] input, out CGMessage cgMessage) { BinaryReader reader = new BinaryReader(new MemoryStream(input)); cgMessage = new CGMessage(reader); switch (cgMessage.messageType) { case MessageType.Type1: cgMessage = Module1.ContinueParse(reader, cgMessage); break; case MessageType.Type2: cgMessage = Module2.ContinueParse(reader, cgMessage); break; case MessageType.Type3: cgMessage = Module3.ContinueParse(reader, cgMessage); break; default: break; } cgMessage.ParseTailingFields(reader); }