有没有办法将字符串列表转换为c#中的枚举标志?

时间:2016-08-17 17:13:35

标签: c# xml enums enum-flags

我在xml文档中有一个字符串列表:

<properties>red yellow blue</properties>

我有一个枚举:

[Flags]
public enum Properties 
{
    None    = 0,
    red = 1,
    yellow = 2,
    blue = 4,
    green = 8
}

有没有办法将XML字符串转换为枚举标记值70111

关于这方面的反向,有无数的资源,但我无法找到有关从字符串转换为Flags的任何信息。

2 个答案:

答案 0 :(得分:3)

是的,但你需要用逗号分隔它们:

[Flags]
public enum Test
{
    A = 1,
    B = 2,
    C = 4
}

Test t;
Enum.TryParse<Test>("A,B", out t);

由于名称中不能包含空格,因此在调用TryParse之前,只需将空格字符串替换为逗号即可。

答案 1 :(得分:1)

不确定

string flags = "red yellow blue";

var eflags = flags.Split()
                  .Select(s => (Properties)Enum.Parse(typeof(Properties), s))
                  .Aggregate((a, e) => a | e);

Console.WriteLine(eflags);
Console.WriteLine((int)eflags);

Outpus

  

红色,黄色,蓝色

     

7

我将留下如何从xml中获取字符串。