下面的代码是演示问题的原始代码的精简版本。在 dotnetcore (1.0.1) 中,.IsEnum 属性被移动到 System.Reflection。我进行了所有按预期工作的更改。但是,我无法使用的是对象类型。
编译器抛出这个错误: c:\tmp\netcore\repro\Program.cs(14,17): error CS0103: 当前上下文中不存在名称“t”
public class Program
{
enum Kleur {Red, Blue, Green}
public static void Main(string[] args)
{
object myType = Kleur.Green;
if (myType.GetTypeInfo().IsEnum)
{
Console.WriteLine("Yes its an enum");
}
}
}
在 dotnetcore 中是否有测试对象是否为 Enum 类型的变通方法?是否有特定原因导致类型对象没有扩展方法(我需要的所有其他类型似乎都可以工作)。
最佳答案
当从 Type
移动到 TypeInfo
时,.GetType()
的替换不仅仅是 .GetTypeInfo()
,它是 .GetType().GetTypeInfo()
。那是因为 Type
没有被删除,而是被拆分为 Type
,它只包含一些基本成员,而 TypeInfo
则包含其余部分。
所以,你的代码应该是:
object myType = Kleur.Green;
if (myType.GetType().GetTypeInfo().IsEnum)
{
Console.WriteLine("Yes its an enum");
}
关于c# - dotnetcore GetTypeInfo() 没有在类型对象的变量上定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39642578/