2014-12-22 223 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(); 
} 

有什麼建議?

編輯:這是造成我的麻煩是鑄造的int枚舉

+0

另請參閱https://github.com/Fody/ExtraConstraints – Aron

+0

@Aron我試過UnconstrainedMelody,但沒有奏效。我會嘗試ExtraConstraints,看看它是怎麼回事 –

回答

0

爲什麼不使用Enum.Parse,而不是直接鑄造的一部分?對要轉換的值調用ToString。

+0

我沒有意識到Enum.Parse方法可以接受int AS 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