在我的代码中,我使用了许多小的枚举:
enum UserRequest : byte { Burp=1, Sneeze=2, Fart=3 }
在将整数输入转换为此枚举之前,我经常需要对其进行验证。
bool valid_input = Enum.IsDefined(typeof(UserRequest), user_byte_value);
当枚举使用 FlagsAttribute 时,这种方法不起作用;Enum.IsDefined无法自动组合标志以生成指定值。但是,我已经能够解决不需要 FlagsAttribute 的问题。
但是,TIL 认为Eazfuscator.NET的混淆会破坏 Enum.IsDefined。我知道这是一种可能性,但我希望它不会,因为它不在 System.Reflection 命名空间中(据报道,它大量使用了 System.Reflection)。
所以我想知道是否有人知道任何好的选择。我特别关注以下内容:
- 允许检查整数是否在指定的枚举中。
- 与 .NET Framework 2.0 和 Mono 框架兼容。
- 无需显式禁用混淆(使用属性或某些 GUI 工具)即可幸免于难。