Enum extension for SetFlag and ClearFlag

This commit is contained in:
Simon Lübeß
2024-03-16 23:34:10 +01:00
parent e703452b94
commit f9ea705e77
@@ -0,0 +1,22 @@
namespace System;
extension Enum
{
public static void SetFlag<T>(ref T value, T flag) where T : enum
{
value = (T)(value.Underlying | flag.Underlying);
}
public static void ClearFlag<T>(ref T value, T flag) where T : enum
{
value = (T)(value.Underlying & ~flag.Underlying);
}
public static void SetFlagConditionally<T>(ref T value, T flag, bool setFlag) where T : enum
{
if (setFlag)
SetFlag<T>(ref value, flag);
else
ClearFlag<T>(ref value, flag);
}
}