Loop C # sobre uma matriz de dimensões desconhecidas
Eu quero criar um método de extensão para fazer um loopSystem.Array
com número desconhecido de dimensões
Por enquanto, estou usando uma abordagem ingênua:
public static void ForEach<T>(this Array source, Action<T> action)
{
if(source.Rank == 1)
{
for (int w = 0; w < source.GetLength(0); w++)
{
action((T)source.GetValue(w));
}
}
else if(source.Rank == 2)
{
for (int h = 0; h < source.GetLength(1); h++)
{
for (int w = 0; w < source.GetLength(0); w++)
{
action((T)source.GetValue(h, w));
}
}
}
else if(source.Rank == 3)
{
// etc
}
}
Tenho certeza de que há uma maneira muito mais elegante de fazer isso. Mas eu não consigo descobrir. Como generalizo esse método para um número ilimitado de dimensões?