У меня есть флаг Enum
с именем Role
и метод расширения с именем AddRole
, который принимает перечисление Role и int, который работает как флаг и содержит только единицы и нули, где каждый 1 представляет роль, котораяу человека есть.Я хочу, чтобы метод добавил роль в int, так что AddRole(Role.Grandmother, 1000)
возвращает, например, 1100 .
[Flags]
public enum Role
{
Mother = 1,
Daughter = 2,
Grandmother = 4,
Sister = 8,
}
Я пытался сделать это:
public static int AddRole(this Role newRole, int currentRoles)
{
return (int)((Role)currentRoles | newRole);
}
, но это просто возвращает 1004. Кто-нибудь знает правильный способ сделать это?(У меня нет способа избежать представления int в «двоичном ish», так как это способ хранения сущности в (очень старой и неприкасаемой) базе данных)