В C# можно выполнять логические операции над целыми объектами по битам. Смысл логической операции по биту заключается в том, что каждый бит объекта, который нужно управлять, берётся по очереди, а логический результат операции каждого бита — это каждый бит результатного значения. Операторы битовой логики, поддерживаемые C#, показаны на следующем рисунке:
Базовое проектирование разрешений:
<summary>
///權限列舉 </summary> [Атрибут флагов] publicenumPermissions
{ Описание («Не настроено»)] Нет=0, [Описание («Создать»)] Создать=1, [Описание («Читать»)] Read=2, [Описание («Обновление»)] Обновление=4, [Описание («Удалить»)] Удалить=8, [Описание («Все функции»)] All=Создать| Читать| Обновление| Удалить
}
Техника 1: Использовать степенное значение 2 как перечисление для будущих битовых операций (&AND, |OR, ^XOR).
Совет 2: Добавьте новое действие разрешения к существующему разрешению. (Операционная операция)
Permissionspermission=Permissions.None; разрешение=разрешение| Разрешения. Создать; MessageBox.Show(разрешение. ToString()); Результат: Создать
Совет 3: Добавьте тег [FlagsAttribute]
Permissionspermission=Permissions.None; разрешение=разрешение| Разрешения. Создать; MessageBox.Show(разрешение. ToString()); Result:Create([FlagsAttribute] не влияет на результат)
разрешение=разрешение| Разрешения. Читайте; MessageBox.Show(разрешение. ToString()); Результат: 3 ([Атрибут флагов] не добавлен) Result:Create,Read (добавить [FlagsAttribute])
Совет 4: Удалите определённое действие разрешения из существующего разрешения. (XOR и AND вычислительные приложения)
Permissionspermission=Permissions.None; разрешение=разрешение| Разрешения. Создать; MessageBox.Show(разрешение. ToString()); Результат: Создать
разрешение=разрешение| Разрешения. Читайте; разрешение=разрешение| Обновление разрешений; MessageBox.Show(разрешение. ToString()); Результат: Создать, Прочитать, Обновить
permission=(permission&(Permissions.All^Permissions.Read)); MessageBox.Show(разрешение. ToString()); Результат:Создать, Обновить
Совет 5: Определите, есть ли у вас определённое разрешение в текущем разрешении (и в операционной работе)
Permissionspermission=Permissions.None; разрешение=разрешение| Разрешения. Создать; MessageBox.Show(разрешение. ToString()); Результат: Создать
разрешение=разрешение| Разрешения. Читайте; разрешение=разрешение| Обновление разрешений; MessageBox.Show(разрешение. ToString()); Результат: Создать, Прочитать, Обновить
permission=(permission&(Permissions.All^Permissions.Read)); MessageBox.Show(разрешение. ToString()); Результат:Создать, Обновить
boolIsCreatable=false; if((permission&Permissions.Create)==Permissions.Create)
{ IsCreatable=true;
} Другое
{ IsCreatable=ложный;
} MessageBox.Show(IsCreatable.ToString()); Результат: Верно
|