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