Шаг 1, используйте двоичный файл NOT:
var notUsedBits = ~ value;
Но это установит все 32 бита, которые не были использованы.
Таким образом, вы, вероятно, захотите маску:
[Flags]
public enum TestEnum
{
A = 1,
B = 2,
C = 4,
D = 8,
All = A|B|C|D, // or compute this inside the method
}
и затем метод становится
// untested
public static TestEnum AllNotContaining(this TestEnum value)
{
return ~ value & TestEnum.All;
}
, это не возвращает IEnumerable, но это странно (и неэффективно) для перечисления Flags в любом случае.