Làm cách nào để kiểm tra xem Type có phải là enum nullable trong C # hay không
Type t = GetMyType();
bool isEnum = t.IsEnum; //Type member
bool isNullableEnum = t.IsNullableEnum(); How to implement this extension method?
Câu trả lời:
CHỈNH SỬA: Tôi sẽ để lại câu trả lời này vì nó sẽ hoạt động và nó thể hiện một số lời kêu gọi mà người đọc có thể không biết. Tuy nhiên, câu trả lời của Luke chắc chắn là đẹp hơn - hãy ủng hộ nó :)
Bạn có thể làm:
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<>));
}
Tôi đã bỏ qua IsEnum
séc bạn đã thực hiện, vì điều đó làm cho phương pháp này tổng quát hơn.