Sto cercando di analizzare una stringa su una proprietà nullable di tipo MyEnum.Parse to Nullable Enum
public MyEnum? MyEnumProperty { get; set; }
sto ottenendo un errore sulla linea:
Enum result = Enum.Parse(t, "One") as Enum;
// Type provided must be an Enum. Parameter name: enumType
Ho un test di console di esempio. Il codice funziona se rimuovo nullable sulla proprietà MyEntity.MyEnumProperty
.
Come posso far funzionare il codice senza conoscere il tipo di enum tranne tramite riflessione?
static void Main(string[] args)
{
MyEntity e = new MyEntity();
Type type = e.GetType();
PropertyInfo myEnumPropertyInfo = type.GetProperty("MyEnumProperty");
Type t = myEnumPropertyInfo.PropertyType;
Enum result = Enum.Parse(t, "One") as Enum;
Console.WriteLine("result != null : {0}", result != null);
Console.ReadKey();
}
public class MyEntity
{
public MyEnum? MyEnumProperty { get; set; }
}
public enum MyEnum
{
One,
Two
}
}
d'oro! Grazie mille –
So che questo è del 2012, ma per chiunque si sia imbattuto nello stesso problema (come me) - Un piccolo miglioramento: Aggiungi un controllo per t.IsGenericType prima di t.GetGenericTypeDefinition() == ..., altrimenti il codice potrebbe rompersi per un tipo di enum non annullabile –