c # Traductor de números de teléfono alfa

Tengo una tarea asignada donde el programa aceptará cualquier número de teléfono en el formato similar a 555-GET-FOOD. La tarea es asignar las letras alfabéticas a números y traducir el número a su equivalente numérico.
Por ejemplo: A, B, C = 2; D, E, F = 3; etc ...

No hemos cubierto las clases o la creación de mapas en este momento, por lo que estas no serían soluciones viables. Este capítulo cubre la enumeración, así que estoy trabajando para resolver usando un tipo Enumerado. Tengo un método configurado para validar los datos (asegúrese de que el número correcto de caracteres y los guiones estén en el lugar correcto) y esto funciona correctamente. Tengo otro método configurado para eliminar los guiones y también usa el método ToUpper () y esto también funciona correctamente, por lo que el ciclo foreach que configuré con el número después de que estos dos métodos ya hayan terminado.

También configuré un método para que se ejecute después de la conversión para agregar los guiones y esto también funciona.

He intentado varias formas de conseguir es trabajar y los he dejado comentados sobre la posibilidad de que sean lo que necesito usar, para mi intento con la declaración de cambio, solo configuré con la letra A por ahora, y planeo termine las letras restantes si puedo hacer que esto funcione. Creo que uno de mis problemas es el bucle foreach está usando un tipo char y el interruptor está usando un int. Parece ser el mismo problema al probar el código dentro del bucle foreach, pero no estoy seguro de cómo solucionarlo, por lo que se agradece cualquier sugerencia.

public enum AlphaNumber
{ 
    A=2, B=2, C=2, D=3, E=3, F=3, G=4, H=4, I=4, J=5, K=5, L=5, 
    M=6, N=6, O=6, P=7, Q=7, R=7, S=8, T=8, U=8, V=9, W=9, X=9, Y=9, Z=9
}
 private void UpdatePhone(AlphaNumber phone)
    {
        switch (phone)
        {
            case AlphaNumber.A:
           //return AlphaNumber.(int[])Enum.GetValues(typeof(AlphaNumber));
           //return (Enum.GetValues(typeof(AlphaNumber)));
           //   (int)ValueType;
                Enum.GetValues(typeof(AlphaNumber));
                break;                   
        }
private void translateButton_Click(object sender, EventArgs e)
    {
        numberLabel.Text = "";//Clear the numberLabel
        //Get a trimmed copy of the user's input.  
        string input = numberTextBox.Text.Trim();

        if (IsValidFormat(input))
        {
            Unformat(ref input);

            foreach (char ch in input)
            {
                if (char.IsLetter(ch))//                    {
                    ch = (char)Enums.AlphaNumber.Active;
                    //ch = (char)Enum.GetValues(typeof(AlphaNumber));
                    //ch = Enum.TryParse(AlphaNumber);
                   // ch = AlphaNumber.(int[])Enum.GetValues(typeof(AlphaNumber));
                    //UpdatePhone(ch);
                   MessageBox.Show("Character is char");                    }
            }

            TelephoneFormat(ref input);    
            numberLabel.Text = input;

Estoy abierto a cualquier sugerencia y agradezco cualquier ayuda brindada. Donde necesito ayuda es dentro del bucle foreach, estoy mirando cada valor y si es una letra, quiero obtener el valor de los valores de enumeración y reemplazar el carácter con el valor numérico.

Respuestas a la pregunta(5)

Su respuesta a la pregunta