Nombre de columna de datos de DataRow (no DataTable)

Necesito iterar el nombre de columna y el tipo de datos de columna de una fila específica. Todos los ejemplos que he visto han iterado una base de datos completa. Quiero pasar una sola fila a una función para hacer un montón de procesamiento condicional. Quiero separar el procesamiento condicional para facilitar la legibilidad.

Esto es lo que tengo:

private void doMore(DataRow dr)
{
    foreach (DataColumn c in dr.ItemArray)  //loop through the columns. 
    {
        MessageBox.Show(c.ColumnName.ToString());
    }
}

El error devuelto es

System.InvalidCastException: no se puede convertir el objeto de tipo 'System.String' al tipo 'System.Data.DataColumn'.

¿Cómo obtendría el nombre de la columna de la fila o no tengo otra opción y debo pasar la información completa a la función?

Respuestas a la pregunta(4)

Su respuesta a la pregunta