可移植类库中的Type.IsEnum属性

17

我正在尝试使用 ASP.NET Core 1.0 编写 可移植类库(Portable Class Library),以下是相关指令:

public static void WriteMessage<T>(T value)
{
    if (typeof(T).IsEnum)
    {
        Debug.Print("Is enum")
    }
    else
    {
        Debug.Print("Not Is enum")
    }
}

但是这段代码无法编译,因为编译器会提示类型上不存在属性IsEnum
有什么建议吗?

文档称:“如果当前类型表示泛型类型或泛型方法定义中的类型参数,则此属性始终返回false。” 这里可能也有相关信息。 - Cee McSharpface
1个回答

42

Type的某些功能在.NET Core中被移动到TypeInfo中。

typeof(T).GetTypeInfo().IsEnum

嗨,Gabriel,我尝试使用你的代码,但是Type上没有GetTypeInfo()函数。出了什么问题? - Karlok
4
GetTypeInfo() 是来自于 IntrospectionExtensions 的扩展方法。在你的类中添加 using System.Reflection - Gabriel Negut
太好了!我忘记加上"Using"。谢谢Gabriel!现在可以工作了 :-) - Karlok
这对我也有用。@Karlok,请标记为答案,以便其浮动到顶部。 - CyberFox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接