public IActionResult CanMoveTo([FromQuery] string figureName,
                                       [FromQuery] byte fromX,
                                       [FromQuery] byte toX,
                                       [FromQuery] byte fromY,
                                       [FromQuery] byte toY)
        {
            List <Type> chessFigureTypes = Assembly.GetExecutingAssembly().GetTypes().Where(x => x.BaseType == typeof(ChessFigure))
                                           .ToList();

            Type requestedType = chessFigureTypes.Single(t => t.Name.Equals(figureName, StringComparison.OrdinalIgnoreCase));

            ChessFigure chessFigure = (ChessFigure)Activator.CreateInstance(requestedType, new object[] { fromX, fromY }, null);

            bool canMoveTo = chessFigure.CanMoveTo(toX, toY);

            return(Ok(canMoveTo));
        }