带标志枚举的C#设置

Kon*_*rad 3 .net c# enums

我列举了像这样的标志:

[Flags]
public enum ResultValues
{
    None = 0,
    Red = 1,
    Yellow = 2,
    Green = 4,
    Other = 8
};
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我可以将这些标志进行或连接,并且一切正常。

现在,我将这种枚举类型的变量存储在设置中。如果添加设置项,则可以从上方输入枚举类型并将其之一(!)选择/设置为默认值(例如绿色)。

<Setting Name="FilterResult" Type="MyNamespace.ResultValues" Scope="User">
  <Value Profile="(Default)">Green</Value>
</Setting>
Run Code Online (Sandbox Code Playgroud)

但是我该如何将值的组合存储为默认值-因为我可以在代码中使用

ResultValues.Red | ResultValues.Yellow | ResultValues.Green | ResultValues.Other
Run Code Online (Sandbox Code Playgroud)

dym*_*oid 8

您可以通过用逗号分隔值来存储值:

<Value Profile="(Default)">Green, Other</Value>
Run Code Online (Sandbox Code Playgroud)

内置的解析器会将这样的字符串转换为正确的“组合”枚举值:

ResultValues.Green | ResultValues.Other
Run Code Online (Sandbox Code Playgroud)


Ren*_*eno 5

逗号分隔:

Flags f = Enum.Parse<Flags>("Red,Yellow,Green");
Run Code Online (Sandbox Code Playgroud)