2012-12-10 49 views
2

我有一個枚舉定義如下:C#枚舉解析與思考

public enum Format { 
    Normal = 1, 
    Type2 = 2, 
    Type3 = 3 
} 

我試圖使用反射和調用動態類型轉換功能。但是,在下面的代碼中,「value」的值是「3」而不是「Type3」,並且它不被識別爲枚舉。是否可以使用int值,3來識別枚舉?

Type enumType = property.PropertyType; 
if (Enum.IsDefined(enumType, value)) 
    return Enum.Parse(enumType, value); 
+0

什麼_exactly_是'value'?它來自什麼? – SLaks

+0

該值來自數據庫。該值是一個Db字符串值。 – Garrett

回答

3

您需要致電Enum.ToObject()將原始值轉換爲枚舉的盒裝實例。

+1

@GW只是爲了澄清在問題的上下文中,你會想要調用'Enum.ToObject(enumType,value)'。 –

+0

謝謝!我現在要試一試 – Garrett

+0

它看起來很棒,它工作正常。但是,我不得不將該值轉換爲一個整數類型爲了Enum.ToObject。你有什麼建議,如果是的話,是什麼來處理枚舉字符串值的最好方法呢? (就像Normal或Type2進來一樣 - 這樣可以同時處理一個int和一個字符串) – Garrett