有没有办法将字符串列表转换为c#中的枚举标志?
我有一个字符串列表的XML文档中:有没有办法将字符串列表转换为c#中的枚举标志?
<properties>red yellow blue</properties>
,我有一个枚举:
[Flags]
public enum Properties
{
None = 0,
red = 1,
yellow = 2,
blue = 4,
green = 8
}
有没有办法将XML字符串转换成7
或枚举标志值0111
?
围绕着做相反的事情有无数的资源,但我无法找到关于从字符串转换为标志的任何信息。
是的,但你需要他们用逗号分隔:
[Flags]
public enum Test
{
A = 1,
B = 2,
C = 4
}
Test t;
Enum.TryParse<Test>("A,B", out t);
既然你不能在名称中包含空格,你可以做一个字符串的空间调用的TryParse前更换到逗号。
当然
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
红,黄,蓝
我会留下怎样获取字符串从XML高达您。
这是我见过的最快的投票。 – juharr
显然有人正在进行投票狂热......我也立即得到了一个。为什么我甚至都与这个网站大声笑? – SledgeHammer
@SledgeHammer现在我已经看到它在投票和反对票之间来回滚动3次或4次。有趣。 – juharr
您是否要求在运行时创建编译时构造?你也许可以用反射来做到这一点,但我相信这里可能有另一种'enum'。 –