2011-08-14 50 views
2

在下面的代碼中,我只是將一個字符串(例如「medium」)轉換爲Enum值。我需要做的是將Opacity作爲一個固定的Enum類型,而不是將其作爲參數傳遞,以便該函數對任何Enum進行操作。這似乎比我預期的更難,即「Enum MyEnum」不起作用。解決任何人?如何傳遞Enum作爲參數?

public enum Opacity 
{ 
    Low, 
    Medium, 
    High 
} 

public static Enum StringToEnum(String str) 
{    
    return (Opacity)Enum.Parse(typeof(Opacity), str, true); // Case insensitive    
} 
+0

YetAnotherUser提供了正確的答案,你問的問題,但什麼是包裝'Enum.Parse'點? StringToEnum方法不會添加新的值,只會改變您調用的方法的名稱。 – Mike

+0

@Mike你對這裏只是一個名稱的改變 - 雖然可以增強這個添加多個驗證,支持_string names_在屬性中定義,實現它作爲擴展方法來簡單地說 - 「SomeArbidObject.StringRepresentingOpacity.StringToEnum '等等。基本上,如果你想要,你可以使它更有用。 – YetAnotherUser

回答

9
public static T StringToEnum<T>(String str) where T : struct 
{ 
    return (T)Enum.Parse(typeof(T), str, true); 
}