Como determinar o tipo representado de valor de enumeração?

Considere as duas enumerações a seguir:

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

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

Eu posso recuperar o valor físico representado por esses valores de enum por meio de conversão explícita,((int)MyEnum1.Value2) == 2 ou((char)MyEnum2.Value2) == 'b', mas e se eu quiser obter a representação char ou int sem antes conhecer o tipo para transmitir?

É possível obter o valor subjacente de uma enum sem uma conversão ou é pelo menos programaticamente possível determinar o tipo correto do valor subjacente?

questionAnswers(4)

yourAnswerToTheQuestion