Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在c#中从字符串列表转换为枚举标志?_C#_Xml_Enums_Enum Flags - Fatal编程技术网

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

有没有办法在c#中从字符串列表转换为枚举标志?,c#,xml,enums,enum-flags,C#,Xml,Enums,Enum Flags,我在xml文档中有一个字符串列表: <properties>red yellow blue</properties> 是否有方法将XML字符串转换为7或0111的枚举标志值 关于做相反的事情,有无数的参考资料,但我很难找到任何关于从字符串转换为标志的信息。当然 string flags = "red yellow blue"; var eflags = flags.Split() .Select(s =>

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

<properties>red yellow blue</properties>
是否有方法将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);
输出

红、黄、蓝

七,

我将把如何从xml中提取字符串留给您。

当然

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);
输出

红、黄、蓝

七,


我将把如何从xml中提取字符串留给您。

是的,但您需要用逗号分隔:

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

Test t;
Enum.TryParse<Test>("A,B", out t);
[标志]
公共枚举测试
{
A=1,
B=2,
C=4
}
试验t;
锥虫计数(“A,B”,out t);

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

是,但需要逗号分隔:

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

Test t;
Enum.TryParse<Test>("A,B", out t);
[标志]
公共枚举测试
{
A=1,
B=2,
C=4
}
试验t;
锥虫计数(“A,B”,out t);

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

是否要求在运行时创建编译时构造?您可能可以通过反射来实现这一点,但我确信这里可能有
enum
s的替代方案。您是否要求在运行时创建编译时构造?你也许可以通过反射来做到这一点,但我相信这里可能有一个替代
enum
s的方法。这一定是我见过的最快的否决票。显然有人在疯狂地否决投票。。。我也立刻得到了一个。为什么我会对这两个网站都感兴趣呢?@SledgeHammer现在我已经看到它在赞成票和反对票之间来回移动了三四次。有点好笑。这看起来正是我需要的,所以我个人不理解反对票。也许有人会插话解释为什么这是一个糟糕的答案。@leigero,如果你看我的答案,Enum内置了这个,所以所有这些linq东西都有点杀伤力过大,如果你反复调用,性能会受到影响。不确定这是否是原因。。。但随机所有的投票都变成了0 lol。可能是一个网站错误或什么的。这一定是我见过的最快的否决票。显然有人在疯狂地否决投票。。。我也立刻得到了一个。为什么我会对这两个网站都感兴趣呢?@SledgeHammer现在我已经看到它在赞成票和反对票之间来回移动了三四次。有点好笑。这看起来正是我需要的,所以我个人不理解反对票。也许有人会插话解释为什么这是一个糟糕的答案。@leigero,如果你看我的答案,Enum内置了这个,所以所有这些linq东西都有点杀伤力过大,如果你反复调用,性能会受到影响。不确定这是否是原因。。。但是所有的投票结果都是0 lol,这可能是一个网站错误或其他原因。