In C#, you can perform logical operations on integer objects by bit. The meaning of logical operation by bit is that each bit of the object to be operated is taken in turn, and the logical operation result of each bit is each bit of the result value. The bit logic operators supported by C# are shown in the following figure:
Basic permission design:
///<summary>
///權限列舉 ///</summary> [FlagsAttribute] publicenumPermissions
{ Description("Not configured")] None=0, [Description("Create")] Create=1, [Description("Read")] Read=2, [Description("Update")] Update=4, [Description("Delete")] Delete=8, [Description("All Features")] All=Create| Read| Update| Delete
}
Technique 1: Use the power value of 2 as an enumeration value for future bit operations (&AND, |OR, ^XOR).
Tip 2: Add a new permission action to the existing permission. (OR Operation)
Permissionspermission=Permissions.None; permission=permission| Permissions.Create; MessageBox.Show(permission. ToString()); //Result:Create
Tip 3: Add the [FlagsAttribute] tag
Permissionspermission=Permissions.None; permission=permission| Permissions.Create; MessageBox.Show(permission. ToString()); Result:Create([FlagsAttribute] does not affect the result)
permission=permission| Permissions.Read; MessageBox.Show(permission. ToString()); Result: 3 ([FlagsAttribute] not added) Result:Create,Read (add [FlagsAttribute])
Tip 4: Remove a certain permission action from the existing permission. (XOR and AND computing applications)
Permissionspermission=Permissions.None; permission=permission| Permissions.Create; MessageBox.Show(permission. ToString()); //Result:Create
permission=permission| Permissions.Read; permission=permission| Permissions.Update; MessageBox.Show(permission. ToString()); //Result:Create,Read,Update
permission=(permission&(Permissions.All^Permissions.Read)); MessageBox.Show(permission. ToString()); //Result:Create,Update
Tip 5: Determine whether you have a certain permission in the current permission (AND operation)
Permissionspermission=Permissions.None; permission=permission| Permissions.Create; MessageBox.Show(permission. ToString()); //Result:Create
permission=permission| Permissions.Read; permission=permission| Permissions.Update; MessageBox.Show(permission. ToString()); //Result:Create,Read,Update
permission=(permission&(Permissions.All^Permissions.Read)); MessageBox.Show(permission. ToString()); //Result:Create,Update
boolIsCreatable=false; if((permission&Permissions.Create)==Permissions.Create)
{ IsCreatable=true;
} else
{ IsCreatable=false;
} MessageBox.Show(IsCreatable.ToString()); //Result:True
|