У меня есть enum, предположим, что он называется sports:
enum Sports
{
Baseball = 1,
Basketball = 2,
Football = 4,
Hockey = 8,
Soccer = 16,
Tennis = 32,
etc...
}
Я бы хотел добавить метод расширения, который очищает бит маски следующим образом:
Sports Mask = Sports.Baseball | Sports.Football | Sports.Tennis; //37
Mask.Clear(Sports.Baseball);
// Mask = Football | Tennis
Thisэто метод расширения, который я придумал, он не работает.Очистка не влияет на маску, значение остается 37. Я не уверен, что могу изменить эту часть из метода расширения.Есть ли другой способ сделать это?
public static void Clear<T>(this Enum value, T remove)
{
Type type = value.GetType();
object result;
if (type.Equals(typeof(ulong)))
{
result = Convert.ToUInt64(value) & ~Convert.ToUInt64((object)remove);
}
else
{
result = Convert.ToInt64(value) & ~Convert.ToInt64((object)remove);
}
value = (Enum)Enum.Parse(type, result.ToString());
}