Функция, выводящая сетку элементов управления

#c# #variables #types #controls

Вопрос:

Мне нужно сделать судоку и игру в сапера для школы. мой учитель любит создавать функции, которые можно использовать в различных приложениях. В обеих этих играх есть сетка, тральщик-это просто x на x, а судоку имеет сетку x на x внутри сетки x на x.

Теперь я хотел создать функцию, которая может выдавать мне эти сетки в надписях, текстовых полях, панелях и т. Д…

у меня есть следующий код:

 internal class Square : Panel
{
    public bool hasBomb;
} 

class MineSweeper
{
    static int fieldSize = 20;
    
    static Square[,] squares;

    internal static void NewGame(Panel parent)
    {
        squares = (Square[,])Func.MakeGrid(typeof(Square), parent, fieldSize);
    }
}

class Func
{
    internal static Control[,] MakeGrid(Type childType, Control parent, int size)
    {
        parent.Controls.Clear();
        int childSize = parent.Width / size;
        Control[,] output = new Control[size, size];
        for (int x = 0; x < size; x  )
        {
            for (int y = 0; y < size; y  )
            {
                Control child = (Control)Activator.CreateInstance(childType);
                child.Size = new Size(childSize, childSize);
                child.Location = new Point(x * childSize, y * childSize);
                output[x, y] = child;
                parent.Controls.Add(child);
            }
        }
        return output;
    }
}
 

Это приводит к ошибке приведения в функции NewGame.

Можно ли написать функцию, которая выводит массив элементов управления, где типом элемента управления может быть любой элемент управления? Или я должен был бы прямо сказать, что MakeGrid имеет тип Square[,]?

Заранее всем спасибо! 😀