有没有办法在 C# 中将字符串列表转换为枚举标志?
Is there a way to convert from a list of strings to an enum flag in c#?
我在 xml 文档中有一个字符串列表:
<properties>red yellow blue</properties>
我有一个枚举:
[Flags]
public enum Properties
{
None = 0,
red = 1,
yellow = 2,
blue = 4,
green = 8
}
有没有办法将XML字符串转换成7
或0111
的枚举标志值?
有无数的资源可以做相反的事情,但我找不到任何关于从字符串转换为标志的信息。
当然
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);
输出
red, yellow, blue
7
我将把如何从 xml 中取出字符串留给你。
是的,但您需要将它们以逗号分隔:
[Flags]
public enum Test
{
A = 1,
B = 2,
C = 4
}
Test t;
Enum.TryParse<Test>("A,B", out t);
由于名称中不能包含 space,因此您可以在调用 TryParse 之前将 space 的字符串替换为逗号。
我在 xml 文档中有一个字符串列表:
<properties>red yellow blue</properties>
我有一个枚举:
[Flags]
public enum Properties
{
None = 0,
red = 1,
yellow = 2,
blue = 4,
green = 8
}
有没有办法将XML字符串转换成7
或0111
的枚举标志值?
有无数的资源可以做相反的事情,但我找不到任何关于从字符串转换为标志的信息。
当然
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);
输出
red, yellow, blue
7
我将把如何从 xml 中取出字符串留给你。
是的,但您需要将它们以逗号分隔:
[Flags]
public enum Test
{
A = 1,
B = 2,
C = 4
}
Test t;
Enum.TryParse<Test>("A,B", out t);
由于名称中不能包含 space,因此您可以在调用 TryParse 之前将 space 的字符串替换为逗号。