Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 24485|Ответ: 3

[Источник] C# Enum Simple Permission Design использует свойство FlagsAttribute

[Скопировать ссылку]
Опубликовано 22.04.2019 14:30:51 | | | |
В 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());
Результат: Верно

C# enum используют функцию Flags, при которой несколько значений хранятся в одной переменной перечисления
https://www.itsvse.com/thread-4661-1-1.html
(Источник: Architect_Programmer)







Предыдущий:System.MissingMethodException: 找不到方法:“Void Dapper.DynamicP...
Следующий:Сходства и различия между виртуальным и (абстрактным) абстрактным и интерфейсом в C#...
Опубликовано 23.04.2019 8:28:32 |
Обсуждайте внимательно и совершенствуйтесь вместе! - Вт 23 апр 2019 08:28:32 GMT+0800 (Китайское стандартное время)
Опубликовано 11.11.2019 9:49:58 |
Как получить описание многовыборного перечисления?
 Хозяин| Опубликовано 11.11.2019 11:00:19 |
Голубое небо и белые облака Опубликовано 2019-11-11 09:49
Как получить описание многовыборного перечисления?

Пожалуйста, ознакомьтесь со статьёй ниже

C# Класс расширения операций типа enum enum
https://www.itsvse.com/thread-7286-1-1.html
(Источник: Architect_Programmer)
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com