我從數據庫中獲得了一個Int16
值,並且需要將其轉換爲枚舉類型。不幸的是,這個代碼層完全不瞭解對象,只知道通過反射可以收集的內容。Convert.ChangeType並轉換爲枚舉?
因此,它最終會調用Convert.ChangeType
,失敗並顯示無效的轉換異常。
我發現了什麼,我認爲一個解決辦法臭,像這樣:
String name = Enum.GetName(destinationType, value);
Object enumValue = Enum.Parse(destinationType, name, false);
有沒有更好的辦法,讓我沒有通過這個字符串操作搬家?
這裏,如果有人需要進行試驗,可用於短,但完整的程序:
using System;
public class MyClass
{
public enum DummyEnum
{
Value0,
Value1
}
public static void Main()
{
Int16 value = 1;
Type destinationType = typeof(DummyEnum);
String name = Enum.GetName(destinationType, value);
Object enumValue = Enum.Parse(destinationType, name, false);
Console.WriteLine("" + value + " = " + enumValue);
}
}
哎喲......我需要停下來試圖回答這樣的問題,我有我的咖啡前... – 2009-02-03 14:10:37
我現在看到,Console.WriteLine也位於無權訪問枚舉類型的圖層中。我完全誤解了。刪除了我的(愚蠢的)答案。 – GvS 2009-02-03 15:47:12