C# 枚举解析。串锚

C# 枚举解析。串锚,c#,winforms,controls,C#,Winforms,Controls,我有一个字符串变量,值为“Top;Left”。是否可以轻松地将其解析到控件.Anchor(不使用if)中 Enum.Parse不起作用,因为Anchor可以接受一个值,例如,Top;左

我有一个字符串变量,值为
“Top;Left”
。是否可以轻松地将其解析到
控件.Anchor
(不使用
if
)中


Enum.Parse
不起作用,因为
Anchor
可以接受一个值,例如,
Top;左AnchorEnum
只能取
Top
,或
Left
,或
Right
,或
Bottom
,或
None
使用
String.Split
,分别使用
Enum.TryParse
Enum.parse
,然后,
得到的值。

没有直接的方法来解析它,但是编写这样的东西非常容易:

public static AnchorStyles Parse(string str)
{
    return str.Split(';')
        .Select(s => (AnchorStyles) Enum.Parse(typeof (AnchorStyles), s, true))
        .Aggregate((a1, a2) => a1 | a2);
    }
}

无需对每个选项进行迭代,就可以很容易地对其进行解析

var s = "Top;Left";
s = s.Replace(";", ", ");
var e = Enum.Parse(typeof(AnchorStyles), s);

唯一的问题是它必须是逗号分隔的,而不是分号。

对downvoter:仅仅因为某人可能做了与你不同的事情,但取得了相同的结果,就不值得进行downvoter。
   string value ="Top;Left";
        var anchor =(System.Windows.Forms.AnchorStyles)Enum.Parse(typeof(System.Windows.Forms.AnchorStyles), value.Replace(";", " , "))