2013-08-20 2 views
2

Я не мастер 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 и приведение его в такое перечисление, в общем? Мне не хватает чего-то основного.

+0

будет ли это хорошим примером использования 'is' для сравнения и' as' для кастинга? – Jonathan

+0

@Jonathan Я думаю 'if (значение Enum) {...}' будет работать. Здесь 'Enum' относится к' System.Enum' ('using System;' предполагается). И если 'value' фактически' null', то 'value.GetType(). IsEnum' будет выдавать, а' value is Enum' будет просто false. –

ответ

9

Вы ищете недвижимость Type.IsEnum, которая делает именно это.

+0

Да, это именно то, что мне нужно. Высокие пятерки вокруг. – Aaron

Смежные вопросы