c# - 从枚举标志转换 CSV,反之亦然

标签 c# serialization enums

考虑以下枚举:

[Flags]
public enum MyEnum
{
    Option1 = 0,
    Option2 = 1,
    Option3 = 2,
    Option4 = 4
}

有没有一种方法可以将等效字符串(不是值)作为 CSV 字符串?通常我可以使用 Enum.GetName函数将类型转换为字符串表示形式,但是,如果您使用组合,则返回 null。

所以基本上我想转换:

var options = MyEnum.Option1 | MyEnum.Option3;

进入

"Option1, Option3" 

然后我希望能够将"Option1, Option3" 转换回MyEnum.Option1 | MyEnum.Option2.

建议?

最佳答案

好吧,除了 Option1 在 flags 枚举中没有多大意义,这只是默认情况下使用 Enum.ParseEnum.ToString().

从这里开始:

var options = MyEnum.Option2 | MyEnum.Option3;
Console.WriteLine(options.ToString());
// Outputs: Option2, Option3

那么你总是可以这样做:

var options2 = (MyEnum) Enum.Parse(typeof (MyEnum), "Option2, Option3");

现在试试这个:

Console.WriteLine((options2 & MyEnum.Option2) == MyEnum.Option2);
Console.WriteLine((options2 & MyEnum.Option4) == MyEnum.Option4);
// Outputs:
//    true
//    false

这似乎完全符合您的要求(同样,忽略了您示例中的 Option1 永远不会发生的事实)

文档:Enum.Parse

关于c# - 从枚举标志转换 CSV,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6997049/

相关文章:

javascript - 在文本区域高亮显示 SQL 代码

php - php反序列化问题

mysql - 通过比较 ENUM 和 SET 列来选择行的最佳方法是什么

c# - 作为另一个 Action 的结果返回 Action

c# - 如何在可移植类库中检索持久 wcf 服务的 instanceId?

django - 如何在 Django rest 框架中检索外键字段?

java - JAXB - 如果类是同一类的字段,我们是否应该使用 @XmlSeeAlso 绑定(bind)类

java - 如何强制子类不断引用枚举?

objective-c - 如何找到 Obj-C 枚举的 Swift 翻译

c# - 锁定来自不同线程的方法范围的 "string"对象会阻止执行吗?