私のコードでは、多くの小さな列挙型を利用しています。
enum UserRequest : byte { Burp=1, Sneeze=2, Fart=3 }
この列挙型に変換する前に、整数入力を検証する必要があることがよくあります。
bool valid_input = Enum.IsDefined(typeof(UserRequest), user_byte_value);
列挙型が FlagsAttribute を使用する場合、このアプローチは機能しません。Enum.IsDefinedは、フラグを自動的に組み合わせて指定された値を作成することはできません。ただし、FlagsAttribute を必要としないことを回避できました。
ただし、Eazfuscator.NETの難読化によって Enum.IsDefined が壊れる TIL。可能性があることはわかっていましたが、System.Reflection 名前空間にないため、そうならないことを望んでいました (報告によると、System.Reflection を多用しています)。
だから、誰かが良い代替案を知っているかどうか疑問に思っています。私は特に次のことを求めています。
- 整数が指定された列挙に含まれているかどうかを確認できます。
- .NET Framework 2.0 および Mono Framework と互換性があります。
- (属性または何らかの GUI ツールを使用して) 明示的に無効にすることなく、難読化を存続させます。