Члены группы enum? - PullRequest
       32

Члены группы enum?

4 голосов
/ 30 декабря 2011

Я хочу иметь возможность определить, принадлежит ли значение перечисления к определенной группе.Смотрите псевдо-пример:

[Flags]
public enum Animals
{
  Dog = 1,
  Cat = 2,
  WildAnimal = Dog | Cat,
  Fly = 4,
  Bee = 8,
  Insect = Fly | Bee
}

public static bool IsInsect(Animals animals)
{
  return Animals.Insect.Qualifies(animals);
}

public static bool Qualifies(this Animals groupName, Animals value)
{
  //Is there a bitwise operation for it?
}

Ответы [ 4 ]

7 голосов
/ 30 декабря 2011

Использовать HasFlag метод для перечисления.

http://msdn.microsoft.com/en-us/library/system.enum.hasflag.aspx

2 голосов
/ 30 декабря 2011
if ((groupName & value) != 0)
    ...
0 голосов
/ 30 декабря 2011

Поместите атрибут описания или пользовательский атрибут из каждого отдельного перечисления, а затем получите эту информацию из отражения.Я привожу пример такого использования с перечислениями в моем блоге, озаглавленном:

C # Использование расширенной информации об атрибутах для объектов

HTH

0 голосов
/ 30 декабря 2011

Используйте «и» и проверьте общие биты:

return (groupName & value) > 0;
...