In C#, puoi eseguire operazioni logiche su oggetti interi per bit. Il significato di operazione logica per bit è che ogni bit dell'oggetto da operare viene preso a turno, e il risultato dell'operazione logica di ogni bit è ciascun bit del valore risultato. Gli operatori di logica a bit supportati da C# sono mostrati nella figura seguente:
Progettazione base dei permessi:
<summary>
///權限列舉 </summary> [BandiereAttributo] publicenumPermessi
{ Descrizione("Non configurato")] Nessuno=0, [Descrizione("Crea")] Crea=1, [Descrizione("Letto")] Lettura=2, [Descrizione("Aggiornamento")] Aggiornamento=4, [Descrizione("Elimina")] Delete=8, [Descrizione("Tutte le Caratteristiche")] Tutti=Crea| Read| Aggiornamento| Elimina
}
Tecnica 1: Usa il valore di potenza di 2 come valore di enumerazione per le operazioni future sui bit (&AND, |OR, ^XOR).
Consiglio 2: Aggiungi una nuova azione di permesso al permesso esistente. (Operazione OR)
Permessipermissione=Permessi.Nessuno; permesso=permesso| Permessi.Crea; MessaggioBox.Mostra(permesso. ToString()); Risultato: Create
Consiglio 3: Aggiungi il tag [FlagsAttribute]
Permessipermissione=Permessi.Nessuno; permesso=permesso| Permessi.Crea; MessaggioBox.Mostra(permesso. ToString()); Risultato:Crea([FlagsAttribute] non influisce sul risultato)
permesso=permesso| Permessi.Leggi; MessaggioBox.Mostra(permesso. ToString()); Risultato: 3 ([FlagsAttribute] non aggiunto) Risultato:Crea, Leggi (aggiungi [FlagsAttribute])
Consiglio 4: Rimuovi una certa azione di permesso dal permesso esistente. (applicazioni di calcolo XOR e AND)
Permessipermissione=Permessi.Nessuno; permesso=permesso| Permessi.Crea; MessaggioBox.Mostra(permesso. ToString()); Risultato: Create
permesso=permesso| Permessi.Leggi; permesso=permesso| Permessi.Aggiornamento; MessaggioBox.Mostra(permesso. ToString()); Risultato: Crea, Leggi, Aggiorna
permission=(permission&(Permissions.All^Permissions.Read)); MessaggioBox.Mostra(permesso. ToString()); Risultato: Crea, Aggiorna
Consiglio 5: Verifica se hai un certo permesso nell'operazione E nel permesso attuale (E operazione)
Permessipermissione=Permessi.Nessuno; permesso=permesso| Permessi.Crea; MessaggioBox.Mostra(permesso. ToString()); Risultato: Create
permesso=permesso| Permessi.Leggi; permesso=permesso| Permessi.Aggiornamento; MessaggioBox.Mostra(permesso. ToString()); Risultato: Crea, Leggi, Aggiorna
permission=(permission&(Permissions.All^Permissions.Read)); MessaggioBox.Mostra(permesso. ToString()); Risultato: Crea, Aggiorna
boolIsCreatable=falso; if((permission&Permessi.Crea)==Permessi.Crea)
{ IsCreatable=vero;
} altrimenti
{ IsCreatabile=falso;
} MessaggiBox.Mostra(IsCreatable.ToString()); Risultato: Vero
|