Я пытаюсь преобразовать строку в Enum общим способом в переносимой библиотеке классов.
Цели: .NET 4.5, Windows 8, Windows Phone 8.1, Windows Phone Silverlight 8.
У меня есть это строковое расширение, которое я ранее использовал в приложении Winform. Но в этой библиотеке он не компилируется. Не работает строка if (!typeof(TEnum).IsEnum)
public static class StringExtensions
{
public static TEnum? AsEnum<TEnum>(this string value) where TEnum : struct, IComparable, IFormattable
{
if (!typeof(TEnum).IsEnum)
throw new ArgumentException("TEnum must be an enumerated type");
TEnum result;
if (Enum.TryParse(value, true, out result))
return result;
return null;
}
}
Итак, мой вопрос: в данном контексте, как мне проверить, является ли данный тип перечислением?