Próbuję parsować ciąg z powrotem do właściwość zerową typu MyEnum.Parse to Nullable Enum
public MyEnum? MyEnumProperty { get; set; }
Dostaję błąd na linii:
Enum result = Enum.Parse(t, "One") as Enum;
// Type provided must be an Enum. Parameter name: enumType
Mam przykładowy test konsoli poniżej. Kod działa, jeśli usuwam wartość zerową w usłudze MyEntity.MyEnumProperty
.
Jak mogę uzyskać kod do pracy bez znajomości enum typeOf z wyjątkiem odbicia?
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
}
}
Złota! Dziękuję bardzo –
Wiem, że to jest od 2012 roku, ale dla każdego, kto natknął się na ten sam problem (jak ja) - niewielka poprawa: Dodaj czek dla t.IsGenericType przed t.GetGenericTypeDefinition() == ..., inaczej kod może zostać złamany dla typu wyliczeniowego nie null –