Estoy tratando de analizar una cadena de nuevo a una propiedad anulable de tipo MyEnum.Parse to Nullable Enum
public MyEnum? MyEnumProperty { get; set; }
Recibo un error en la línea:
Enum result = Enum.Parse(t, "One") as Enum;
// Type provided must be an Enum. Parameter name: enumType
tengo una prueba de consola de ejemplo a continuación. El código funciona si elimino el valor de NULL en la propiedad MyEntity.MyEnumProperty
.
¿Cómo puedo hacer que el código funcione sin conocer el tipo de enum excepto por reflexión?
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
}
}
de oro! Muchas gracias –
Sé que esto es de 2012, pero para cualquiera que tropezó con el mismo problema (como yo) - Una pequeña mejora: Agregar un cheque para t.IsGenericType antes de t.GetGenericTypeDefinition() == ..., de lo contrario el código podría romperse para un tipo de enumeración no nulo –