2

列挙型が a である[Flags] enumか、それが正規であるかを反射的にテストする方法はありますenumか?

列挙型が Flags 列挙型である場合と、Flags 列挙型でない場合とでは、アプリケーションの動作が少し異なる必要があります。

4

2 に答える 2

4

リフレクションを介して属性の存在をテストできます。

System.Attribute[] attrs = System.Attribute.GetCustomAttributes(t);
var isFlags = attrs.Any(attr => attr is FlagsAttribute);

または:

var isFlags = typeof(MyEnum).GetCustomAttributes<FlagsAttribute>().Any();

参照: http://msdn.microsoft.com/en-us/library/z919e8tw(v=vs.80).aspx

【OP編集:】

これは機能しましたが、構文が少し間違っています。正解です:

var isFlags = myEnum.GetType()
    .GetCustomAttributes(typeof(FlagsAttribute), false).Any();
于 2013-02-28T09:05:38.020 に答える
1

リフレクションを使用して列挙型の属性を取得し、FlagsAttribute が使用されているかどうかを確認できます。

于 2013-02-28T09:05:39.457 に答える