मैं एक स्ट्रिंग को वापस MyEnum प्रकार की एक निरर्थक संपत्ति पर पार्स करने की कोशिश कर रहा हूं।पार्स टू न्यूटेबल एनम
public MyEnum? MyEnumProperty { get; set; }
मैं लाइन पर एक त्रुटि हो रही है:
Enum result = Enum.Parse(t, "One") as Enum;
// Type provided must be an Enum. Parameter name: enumType
मैं एक नमूना कंसोल परीक्षण नीचे है। अगर मैं MyEntity.MyEnumProperty
पर संपत्ति को हटा देता हूं तो कोड काम करता है।
प्रतिबिंब के माध्यम से टाइपऑफ enum को जानने के बिना मैं कोड को कैसे काम कर सकता हूं?
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
}
}
गोल्डन! बहुत बहुत धन्यवाद –
मुझे पता है कि यह 2012 से है, लेकिन किसी भी व्यक्ति के लिए जो एक ही समस्या (जैसे मेरे) पर ठोकर खा रहा है - एक छोटा सुधार: टी.जीटजेनेरिक टाइप टाइप() == ... से पहले टी.इसेजेनेरिक टाइप के लिए एक चेक जोड़ें कोड एक गैर-शून्यणीय enum प्रकार के लिए तोड़ सकता है –