列挙型が a である[Flags] enum
か、それが正規であるかを反射的にテストする方法はありますenum
か?
列挙型が Flags 列挙型である場合と、Flags 列挙型でない場合とでは、アプリケーションの動作が少し異なる必要があります。
列挙型が a である[Flags] enum
か、それが正規であるかを反射的にテストする方法はありますenum
か?
列挙型が Flags 列挙型である場合と、Flags 列挙型でない場合とでは、アプリケーションの動作が少し異なる必要があります。
リフレクションを介して属性の存在をテストできます。
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();
リフレクションを使用して列挙型の属性を取得し、FlagsAttribute が使用されているかどうかを確認できます。