Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 24485|Resposta: 3

[Fonte] O design simples de permissão de C# Enum usa a propriedade FlagsAttribute

[Copiar link]
Publicado em 22/04/2019 14:30:51 | | | |
Em C#, você pode realizar operações lógicas em objetos inteiros por bit. O significado de operação lógica por bit é que cada bit do objeto a ser operado é tomado por turno, e o resultado lógico de cada bit é cada bit do valor do resultado. Os operadores de lógica de bits suportados por C# são mostrados na figura a seguir:



Design básico de permissão:

<summary>
///權限列舉
</summary>
[FlagsAttribute]
publicenumPermissions
{
Descrição ("Não configurado")]
Nenhum=0,
[Descrição("Criar")]
Criar=1,
[Descrição("Lido")]
Leitura=2,
[Descrição("Atualização")]
Atualização=4,
[Descrição("Excluir")]
Delete=8,
[Descrição("Todas as Funcionalidades")]
Todos=Criar| Read| Atualização| Excluir
}



Técnica 1: Use o valor de potência de 2 como valor de enumeração para futuras operações de bits (&AND, |OR, ^XOR).


Dica 2: Adicione uma nova ação de permissão à permissão existente. (Operação de OR)

Permissõespermissão=Permissões.Nenhuma;
permissão=permissão| Permissões.Criar;
MessageBox.Show(permissão. ToString());
Resultado: Criar

Dica 3: Adicione a tag [FlagsAttribute]

Permissõespermissão=Permissões.Nenhuma;
permissão=permissão| Permissões.Criar;
MessageBox.Show(permissão. ToString());
Resultado:Criar([FlagsAttribute] não afeta o resultado)

permissão=permissão| Permissões.Leia;
MessageBox.Show(permissão. ToString());
Resultado: 3 ([FlagsAttribute] não adicionado)
Resultado: Criar, Ler (adicionar [FlagsAttribute])


Dica 4: Remova uma certa ação de permissão da permissão existente. (Aplicações de computação XOR e AND)

Permissõespermissão=Permissões.Nenhuma;
permissão=permissão| Permissões.Criar;
MessageBox.Show(permissão. ToString());
Resultado: Criar

permissão=permissão| Permissões.Leia;
permissão=permissão| Permissões.Atualização;
MessageBox.Show(permissão. ToString());
Resultado: Criar, Ler, Atualizar

permission=(permission&(Permissions.All^Permissions.Read));
MessageBox.Show(permissão. ToString());
Resultado: Criar, Atualizar


Dica 5: Determine se você tem uma certa permissão na permissão atual (AND operação)

Permissõespermissão=Permissões.Nenhuma;
permissão=permissão| Permissões.Criar;
MessageBox.Show(permissão. ToString());
Resultado: Criar

permissão=permissão| Permissões.Leia;
permissão=permissão| Permissões.Atualização;
MessageBox.Show(permissão. ToString());
Resultado: Criar, Ler, Atualizar

permission=(permission&(Permissions.All^Permissions.Read));
MessageBox.Show(permissão. ToString());
Resultado: Criar, Atualizar

boolIsCreatable=false;
if((permission&Permissions.Create)==Permissions.Create)
{
IsCriável=verdadeiro;
}
senão
{
IsCriável=falso;
}
ImageBox.Mostrar(ÉCriável.ParaString());
Resultado: Verdadeiro

Enums C# usam a característica Flags, onde múltiplos valores são armazenados em uma variável de enumeração
https://www.itsvse.com/thread-4661-1-1.html
(Fonte: Architect_Programmer)







Anterior:System.MissingMethodException: 找不到方法:“Void Dapper.DynamicP...
Próximo:As semelhanças e diferenças entre o virtual e o (abstrato) abstracth e interface em C#...
Publicado em 23/04/2019 08:28:32 |
Conversem com atenção e melhorem juntos! - Ter 23 abr 2019 08:28:32 GMT+0800 (Horário Padrão da China)
Publicado em 11/11/2019 09:49:58 |
Como faço para obter uma descrição para uma enumeração multi-seleção?
 Senhorio| Publicado em 11/11/2019 11:00:19 |
Blue Sky and White Clouds Publicado em 2019-11-11 09:49
Como faço para obter uma descrição para uma enumeração multi-seleção?

Por favor, consulte o artigo abaixo

C# Classe de extensão de operação do tipo enum
https://www.itsvse.com/thread-7286-1-1.html
(Fonte: Architect_Programmer)
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com