Ho ottenuto un valore Int16
dal database e devo convertirlo in un tipo di enum. Questo è sfortunatamente fatto in uno strato del codice che sa molto poco degli oggetti, tranne per quello che può raccogliere attraverso la riflessione.Convert.ChangeType e conversione in enumerazione?
Come tale, termina chiamando Convert.ChangeType
che non riesce con un'eccezione di cast non valida.
ho trovato quello che considero una soluzione puzzolente, in questo modo:
String name = Enum.GetName(destinationType, value);
Object enumValue = Enum.Parse(destinationType, name, false);
C'è un modo migliore, in modo che non devo per muoversi attraverso questa operazione String?
Ecco una breve, ma completo, il programma che può essere utilizzato, se qualcuno ha bisogno di sperimentare:
using System;
public class MyClass
{
public enum DummyEnum
{
Value0,
Value1
}
public static void Main()
{
Int16 value = 1;
Type destinationType = typeof(DummyEnum);
String name = Enum.GetName(destinationType, value);
Object enumValue = Enum.Parse(destinationType, name, false);
Console.WriteLine("" + value + " = " + enumValue);
}
}
Ahi ... ho bisogno di smettere di cercare di rispondere a domande come questo prima ho avuto il mio caffè ... –
vedo ora , Console.WriteLine si trova anche in un livello che non ha accesso al tipo di enum. Ho completamente frainteso. Cancellata la mia (stupida) risposta. – GvS