¿Cómo determinar el tipo de valor de enumeración representado?

Considere los siguientes dos enumeraciones:

enum MyEnum1 {
    Value1 = 1,
    Value2 = 2,
    Value3 = 3
}

enum MyEnum2 {
     Value1 = 'a',
     Value2 = 'b',
     Value3 = 'c'
}

Puedo recuperar el valor físico representado por estos valores de enumeración a través de una conversión explícita,((int)MyEnum1.Value2) == 2 o((char)MyEnum2.Value2) == 'b', pero ¿qué sucede si quiero obtener la representación char o la representación int sin saber primero el tipo al que se va a enviar?

¿Es posible obtener el valor subyacente de una enumeración sin una conversión o es al menos programáticamente posible determinar el tipo correcto del valor subyacente?

Respuestas a la pregunta(4)

Su respuesta a la pregunta