/// <summary> /// Так как NetworkStream не закрывается, то нет возможности просто скопировать входящие данные из него в MemoryStream. /// Поэтому считываем данные сначала в массив байт. /// Для тестирования обработки ошибок ввведем условие на проброс ошибки, если сообщение начинается с '/' /// <returns></returns> public static Message DeSerialize(byte[] stream) { Message obj; try { MemoryStream receivedStream = new MemoryStream(stream); receivedStream.Position = 0; obj = (Message)formatter.Deserialize(receivedStream); if (obj.body.StartsWith("/")) { throw new Exception("Serialization exception!"); } } catch (Exception ex) { obj = new Message(ex.Message); obj.SetMessageInfo(MessageType.ErrorMessage); } return(obj); }