C# 从字符串名称返回FontStyle

C# 从字符串名称返回FontStyle,c#,parsing,fonts,C#,Parsing,Fonts,我想写一个函数,它将返回FontStyle并将字符串作为参数 FontStyle f = function ("Italic"); // FontStyles.Italic 我不想写Switch-case或if-else语句来做同样的事情 是否可以对不区分大小写的字符串执行此操作 FontStyle f = function ("italic"); FontStyle f = function ("itAlic"); 应该返回相同的值。您可以使用反射: var propertyInfo =

我想写一个函数,它将返回FontStyle并将字符串作为参数

FontStyle f = function ("Italic"); // FontStyles.Italic
我不想写Switch-case或if-else语句来做同样的事情

是否可以对不区分大小写的字符串执行此操作

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

应该返回相同的值。

您可以使用反射:

var propertyInfo = typeof(FontStyles).GetProperty("Italic",
                                                  BindingFlags.Static |
                                                  BindingFlags.Public |
                                                  BindingFlags.IgnoreCase);
FontStyle f = (FontStyle)propertyInfo.GetValue(null, null);
在C#中,它只是一个枚举。因此,您可以按如下方式转换它:

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

@MichalPowaga为什么要添加“In
namespace System.Windows
”?@Default奇怪,我几乎可以肯定在格式化它之前它就已经存在了。。。但修订版并没有显示这一点(在so中是否可能)。我不会以这种方式改变这个问题(不同的意思)。另外,我甚至没有发现它,这就是为什么我在Damien_中写了
System.Drawing.FontStyle
,这是一个非信徒的答案。@MichałPowaga,看起来你是对的。这可能是OP的编辑和你的编辑之间的某种合并吗?也许你只是知道他在谈论
System.Windows
名称空间,然后下意识地添加了它:)谢谢。工作正常。可以修改它以获得不区分大小写字符串的Fontstyle。例如,对于“斜体”或“斜体”或“斜体”@user270014:Yes。只需添加另一个绑定标志:。