public XElement Serialize(BoardExit boardExit, string elementName = "boardExit")
 {
     return new XElement(
         elementName,
         new XAttribute("coordinate", CoordinateSerializer.Instance.Serialize(boardExit.Coordinate)),
         new XAttribute("direction", BoardExitDirectionSerializer.Instance.Serialize(boardExit.Direction)),
         new XAttribute("destinationBoardId", boardExit.DestinationBoardId),
         new XAttribute("destinationCoordinate", CoordinateSerializer.Instance.Serialize(boardExit.DestinationCoordinate)));
 }
        public byte[] Serialize(BoardExit boardExit)
        {
            boardExit.ThrowIfNull("boardExit");

            var serializer = new CompactSerializer();

            serializer[0] = CoordinateSerializer.Instance.Serialize(boardExit.Coordinate);
            serializer[1] = Encoding.UTF8.GetBytes(boardExit.Direction.ToString());
            serializer[2] = boardExit.DestinationBoardId.ToByteArray();
            serializer[3] = CoordinateSerializer.Instance.Serialize(boardExit.DestinationCoordinate);

            return serializer.Serialize();
        }