Tôi đang cố gắng phân tích cú pháp một chuỗi trở lại thành thuộc tính không có giá trị của loại MyEnum.Phân tích cú pháp thành Nullable Enum
public MyEnum? MyEnumProperty { get; set; }
Tôi nhận được một lỗi trên dòng:
Enum result = Enum.Parse(t, "One") as Enum;
// Type provided must be an Enum. Parameter name: enumType
Tôi có một giao diện điều khiển thử nghiệm mẫu dưới đây. Mã hoạt động nếu tôi xóa giá trị rỗng trên thuộc tính MyEntity.MyEnumProperty
.
Tôi làm cách nào để mã hoạt động mà không biết loạiOf enum ngoại trừ phản ánh?
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
}
}
Vàng! Cảm ơn bạn rất nhiều –
Tôi biết điều này là từ năm 2012, nhưng đối với bất kỳ ai vấp phải cùng một vấn đề (như tôi) - Một cải tiến nhỏ: Thêm một kiểm tra cho t.IsGenericType trước t.GetGenericTypeDefinition() == ..., nếu không mã có thể phá vỡ cho một loại enum không nullable –