Mi piacerebbe creare un metodo generico per convertire qualsiasi tipo di System.Enum derivato al suo valore intero corrispondente, senza eseguire il cast e preferibilmente senza analizzare una stringa.Come convertire da System.Enum in numero intero di base?
Ad esempio, quello che voglio è qualcosa di simile:
// Trivial example, not actually what I'm doing.
class Converter
{
int ToInteger(System.Enum anEnum)
{
(int)anEnum;
}
}
Ma questo non sembra funzionare. Resharper segnala che non puoi trasmettere espressioni di tipo 'System.Enum' per digitare 'int'.
Ora ho trovato questa soluzione ma preferirei avere qualcosa di più efficiente.
class Converter
{
int ToInteger(System.Enum anEnum)
{
return int.Parse(anEnum.ToString("d"));
}
}
Qualche suggerimento?
Credo che sia il compilatore a lamentarsi, non a Resharper. – Kugel
Non necessariamente. Ho un metodo di estensione su System.Enum, e occasionalmente Resharper decide di lamentarsi: Impossibile convertire l'argomento dell'istanza tipo 'Some.Cool.Type.That.Is.An.Enum' a 'System.Enum' quando è indiscutibilmente È un enum. Se compilo ed eseguo il codice funziona perfettamente. Se poi chiudo VS, soffio via la cache di Resharper e la riaccendi, tutto va bene una volta eseguita la scansione. Per me è una specie di cache snafu. Potrebbe essere lo stesso per lui. – Mir
@Mir Ho avuto ReSharper "lamentarsi" anche di questo. Stessa correzione per me. Non sono sicuro del motivo per cui questi tipi vengono mescolati, ma non è sicuramente il compilatore. – akousmata