【问题标题】:How to tell if object is an enum?如何判断对象是否是枚举?
【发布时间】:2013-08-20 20:17:16
【问题描述】:

我不是 C# 向导,但必须有一个简单的解决方案。

我有一个IValueConverter 用于DataTemplate。转换器将用于数据绑定到enum 类型对象的控件中:public enum ContentTypes。我想编写一个通用转换器,它可以采用任何enum,然后对其进行处理,但是当下面的转换器执行时,对象参数的类型是ContentTypes 而不是Enum

Convert 方法:

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
   Type valueType = value.GetType();    // <-- evaluates to `ContentTypes`. How can I just see if it's an enum, or Enum? 

   if (value.GetType() == typeof(Enum))
   {
       // Do something .... 
   }

   return null;
}

那么,一般来说,是否可以获取一个未知类型的对象并确定它是否是enum 并将其转换为这样的枚举?我缺少一些基本的东西。

【问题讨论】:

  • 这是使用is 进行比较和as 进行转换的好例子吗?
  • @Jonathan 我猜if (value is Enum) { ... } 会起作用。这里Enum 指的是System.Enum(假设为using System;)。如果value 实际上是null,那么value.GetType().IsEnum 将抛出而value is Enum 将只是错误的。

标签: c# silverlight enums ivalueconverter


【解决方案1】:

您正在寻找 Type.IsEnum 属性,它正是这样做的。

【讨论】:

  • 是的,这正是我所需要的。到处击掌。
猜你喜欢
  • 2013-05-09
  • 1970-01-01
  • 1970-01-01
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-22
  • 1970-01-01
相关资源
最近更新 更多