2014-10-02 10 views
5

Ho un tipo di enum che deriva dal byte. Nella mia libreria comune, ad un certo punto c'è un cast di un parametro enum su int. Il problema è quando il mio byte derivato enum arriva a quel metodo nella libreria comune, il cast su int fallisce e solleva un'eccezione.Come digitare check per la classe base istanza enum?

C'è un modo per digitare controllare la classe base di un enum in modo che io possa eseguire il cast di Int solo per enum basate su enum?

Qui ci sono due enumerazioni di esempio:

enum DaysByte : byte { Sat = 1, Sun, Mon, Tue, Wed, Thu, Fri }; 
enum DaysInt : int { Sat = 1, Sun, Mon, Tue, Wed, Thu, Fri }; 
+1

Puoi prega di inviare alcuni esempi di codice? – rhughes

+2

Dai un'occhiata al metodo Enum.GetUnderlyingType: http://msdn.microsoft.com/en-us/library/system.enum.getunderlyingtype(v=vs.110).aspx –

risposta

7

È possibile utilizzare Enum.GetUnderlyingType metodo

Enum.GetUnderlyingType(typeof(YourEnum)) == typeof(int) 

// or via enum value 
Enum.GetUnderlyingType(yourEnumValue.GetType()) == typeof(int) 
+0

Cosa succede se ha solo il valore? –

+0

@ Selman22 Grazie! –

+2

@TimSchmelter ha aggiunto anche questo. È questo che vuoi dire? –

Problemi correlati