【发布时间】: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