मैं कैसे जांचूं कि क्या कोई C # में एक अशक्त एनम है
Type t = GetMyType();
bool isEnum = t.IsEnum; //Type member
bool isNullableEnum = t.IsNullableEnum(); How to implement this extension method?
जवाबों:
संपादित करें: मैं इस उत्तर को छोड़ने जा रहा हूं क्योंकि यह काम करेगा, और यह कुछ कॉलों को प्रदर्शित करता है जिनके बारे में पाठकों को अन्यथा पता नहीं चल सकता है। हालांकि, ल्यूक का जवाब निश्चित रूप से अच्छा है - इसे बढ़ाएं :)
तुम कर सकते हो:
public static bool IsNullableEnum(this Type t)
{
return t.IsGenericType &&
t.GetGenericTypeDefinition() == typeof(Nullable<>) &&
t.GetGenericArguments()[0].IsEnum;
}
public static bool IsNullable(this Type type)
{
return type.IsClass
|| (type.IsGeneric && type.GetGenericTypeDefinition == typeof(Nullable<>));
}
मैंने IsEnum
आपके द्वारा पहले से किए गए चेक को छोड़ दिया, क्योंकि यह इस विधि को अधिक सामान्य बनाता है।