枚举分析.要锚定的字符串

本文关键字:字符串 枚举 | 更新日期: 2023-09-27 17:58:13

我有一个值为"Top;Left"的字符串变量。是否可以轻松地将其解析为Control.Anchor(而不使用if)?

Enum.Parse不起作用,因为Anchor可以取一个值,例如Top;Left;,但AnchorEnum只能取TopLeftRightBottomNone

枚举分析.要锚定的字符串

使用String.Split,使用Enum.TryParseEnum.Parse分别解析它们中的每一个,然后使用OR解析结果值。

解析它很容易,无需对每个选项进行迭代。

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

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

没有直接的解析方法,但很容易编写这样的东西:

public static AnchorStyles Parse(string str)
{
    return str.Split(';')
        .Select(s => (AnchorStyles) Enum.Parse(typeof (AnchorStyles), s, true))
        .Aggregate((a1, a2) => a1 | a2);
    }
}
   string value ="Top;Left";
        var anchor =(System.Windows.Forms.AnchorStyles)Enum.Parse(typeof(System.Windows.Forms.AnchorStyles), value.Replace(";", " , "))