2012-05-10 120 views
3

返回FontStyle我想寫這將返回FontStyle,並採取字符串作爲參數從字符串名稱

FontStyle f = function ("Italic"); // FontStyles.Italic 

我不想寫開關的情況下,或者如果else語句做同樣的功能。

難道不能區分大小寫的字符串嗎?

FontStyle f = function ("italic"); 
FontStyle f = function ("itAlic"); 

應該返回相同。

+0

@MichalPowaga爲什麼你添加「在'命名空間System.Windows'」? – Default

+0

@Default怪異的,我幾乎可以肯定,它之前我已經格式化它...但修訂並沒有顯示如此(是否有可能在SO)。我不會以這種方式改變問題(不同的意思)。 PS。我甚至沒有發現它,這就是爲什麼我在Damien_The_Unbeliever答案中寫了關於'System.Drawing.FontStyle'的原因。 –

+0

@MichałPowaga看起來你是對的。這可能是OP的編輯和你的編輯之間的某種合併?也許你只是知道他在說'System.Windows'命名空間,並且下意識地添加它:) – Default

回答

5

您可以使用反射此:

var propertyInfo = typeof(FontStyles).GetProperty("Italic", 
                BindingFlags.Static | 
                BindingFlags.Public | 
                BindingFlags.IgnoreCase); 
FontStyle f = (FontStyle)propertyInfo.GetValue(null, null); 
+0

謝謝。它的工作正常。是否可以修改它以使用不區分大小寫的字符串的Fontstyle。例如。對於「斜體」或「斜體」或「ItaLic」 – user270014

+1

@ user270014:是的。只需添加另一個綁定標誌:['BindingFlags.IgnoreCase'](http://msdn.microsoft.com/en-us/library/system.reflection.bindingflags.aspx)。 –

9

在C#中它僅僅是一個枚舉。所以你可以這樣轉換它:

FontStyle f = (FontStyle)Enum.Parse(typeof(FontStyle), "Italic", true);