我正在尝试以可移植的类库中的通用方式将字符串转换为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;
}
}
所以我的问题是:在给定的上下文中,如何测试给定类型的枚举?
最佳答案
您可以尝试使用GetTypeInfo
:
using System.Reflection; // to get the extension method for GetTypeInfo()
if(typeof(TEnum).GetTypeInfo().IsEnum)
// whatever