0

Flags Enum オブジェクトにフラグを設定したい文字列値の配列があります。私はこれらのいくつかを持っており、フラグ列挙型の型を渡すためのより一般的な方法を探していましたが、フラグ列挙型ごとにメソッドを複製する必要はありません。これは私が現在持っているものです:

    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型を使用できる一方で、同じことを行うより一般的な方法を探していました。

4

1 に答える 1

7

Enum.Parseすでに複数のフラグを組み合わせることができます。ドキュメントからの引用:

備考

value パラメーターには、列挙メンバーの基になる値または名前付き定数の文字列表現、またはコンマ (,) で区切られた名前付き定数のリストが含まれます。各値、名前、または値のコンマの前後に 1 つ以上の空白を入れることができます。value がリストの場合、戻り値は指定された名前をビットごとの OR 演算で結合した値です。

したがって、次のようにすることができます。

public static T ParseFlagsEnum<T>(string[] values)
{
  return (T)Enum.Parse(typeof(T), string.Join(",", values));
}
于 2013-08-30T20:59:10.997 に答える