【问题标题】:Generic Enum Flag Parser通用枚举标志解析器
【发布时间】:2013-08-30 20:50:24
【问题描述】:

我有一个字符串值数组,我想在 Flags Enum 对象上设置标志。我有其中几个,并且正在寻找一种更通用的方法来传递 Flags 枚举的类型,而不必为每个 Flags 枚举类型复制该方法。这是我目前拥有的:

    public static MyFlagsEnum ParseFlagsEnum(string[] values)
    {
        MyFlagsEnum flags = new MyFlagsEnum();
        foreach (var flag in values)
        {
            flags |= (MyFlagsEnum)Enum.Parse(typeof(MyFlagsEnum), flag);
        }

        return flags;
    }

我一直在寻找一种更通用的方法来做同样的事情,同时能够使用任何 Flags Enum 类型。

【问题讨论】:

标签: c# .net generics enums enum-flags


【解决方案1】:

Enum.Parse 已经可以组合多个标志。引用文档:

备注

value 参数包含枚举成员的基础值或命名常量的字符串表示形式,或由逗号 (,) 分隔的命名常量列表。值中的每个值、名称或逗号之前或之后可以有一个或多个空格。如果 value 是一个列表,则返回值是指定名称与按位或运算组合的值。

所以你可以这样做:

public static T ParseFlagsEnum<T>(string[] values)
{
  return (T)Enum.Parse(typeof(T), string.Join(",", values));
}

【讨论】:

  • 完美运行。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-06
相关资源
最近更新 更多