我在xml文档中有一个字符串列表:
<properties>red yellow blue</properties>
我有一个枚举:
[Flags]
public enum Properties
{
None = 0,
red = 1,
yellow = 2,
blue = 4,
green = 8
}
有没有办法将XML字符串转换为枚举标记值7
或0111
?
关于这方面的反向,有无数的资源,但我无法找到有关从字符串转换为Flags的任何信息。
答案 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中获取字符串。