2014-12-22 5 views
0

Поэтому мне нужно написать метод, который выполняет поиск. Необходимо принять перечисление родовое, а затем преобразовать значение перечисления в строку и вернуть егоEnum as Generic

Это то, что я до сих пор

public static object lookupColumn<TEnum>(int? id, string defaultValue="") 
     where TEnum : struct, IConvertible 
{ 
    if (!(typeof(TEnum).IsEnum)) 
     throw new ArgumentException("TEnum must be of type Enum"); 

    if (!id.HasValue) 
     return defaultValue; 

    TEnum enumValue = (TEnum) id.Value; //This line doesn't compile 
    return enumValue.ToString(); 
} 

Любые предложения?

EDIT: Та часть, которая вызывает у меня неприятность бросает ИНТ на перечисление

+0

Также см. Https://github.com/Fody/ExtraConstraints – Aron

+0

@Aron Я попробовал UnconstrainedMelody, но это не сработало. Я попробую ExtraConstraints и посмотрю, как это происходит –

ответ

0

Почему бы не использовать Enum.Parse вместо прямого броска? Вызовите ToString для значения для преобразования.

+0

Я не понял, что метод Enum.Parse может принимать int AS A STRING. Должно было прочитать документацию лучше. (http://msdn.microsoft.com/en-us/library/system.enum.parse(v=vs.110).aspx) –

+0

Вы также можете использовать Enum.GetName() или сделать свою работу, сделав промежуточное приведение к объекту 'TEnum enumValue = (TEnum) (object) id.Value;' – Grax

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