See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 24485|Vastuse: 3

[Allikas] C# Enum Simple Permission Design kasutab omadust FlagsAttribute

[Kopeeri link]
Postitatud 22.04.2019 14:30:51 | | | |
C#-s saab teha loogilisi operatsioone täisarvulistele objektidele bittide kaupa. Loogilise operatsiooni bittide kaupa tähendab see, et iga objekti bitt võetakse kordamööda ning iga biti loogiline operatsioonitulemus on iga bitt tulemuse väärtusest. C# poolt toetatud bitiloogikaoperaatorid on näidatud järgmisel joonisel:



Põhiline loa disain:

<summary>
///權限列舉
</summary>
[FlagsAttribute]
publicenumPermissions
{
Kirjeldus("Pole konfigureeritud")]
Puudub=0,
[Kirjeldus("Loo")]
Create=1,
[Kirjeldus("Loe")]
Loe=2,
[Kirjeldus("Uuendus")]
Uuendus=4,
[Kirjeldus("Kustuta")]
Delete=8,
[Kirjeldus ("Kõik funktsioonid")]
Kõik=Loo| Loe| Uuendus| Kustuta
}



Tehnika 1: Kasuta võimsusväärtust 2 tulevaste bittide (&AND, |OR, ^XOR) loendamiseks.


Nõuanne 2: Lisa olemasolevale õigusele uus loa tegevus. (OR operatsioon)

Permissionspermission=Permissions.None;
permission=permission| Permissions.Create;
MessageBox.Show(luba. ToString());
Tulemus: Loo

Nõuanne 3: Lisa [FlagsAttribute] silt

Permissionspermission=Permissions.None;
permission=permission| Permissions.Create;
MessageBox.Show(luba. ToString());
Result:Create([FlagsAttribute] ei mõjuta tulemust)

permission=permission| Loads.Read;
MessageBox.Show(luba. ToString());
Tulemus: 3 ([FlagsAttribute] ei lisatud)
Result:Create,Read (lisa [FlagsAttribute])


Nõuanne 4: Eemalda teatud loa toiming olemasolevast loast. (XOR ja AND arvutusrakendused)

Permissionspermission=Permissions.None;
permission=permission| Permissions.Create;
MessageBox.Show(luba. ToString());
Tulemus: Loo

permission=permission| Loads.Read;
permission=permission| Permissions.Update;
MessageBox.Show(luba. ToString());
Tulemus: Loo, Loe, Uuenda

permission=(permission&(Permissions.All^Permissions.Read));
MessageBox.Show(luba. ToString());
Tulemus: Loo, Uuenda


Nõuanne 5: Määra, kas sul on praeguses loas (JA operatsioonis) teatud õigus

Permissionspermission=Permissions.None;
permission=permission| Permissions.Create;
MessageBox.Show(luba. ToString());
Tulemus: Loo

permission=permission| Loads.Read;
permission=permission| Permissions.Update;
MessageBox.Show(luba. ToString());
Tulemus: Loo, Loe, Uuenda

permission=(permission&(Permissions.All^Permissions.Read));
MessageBox.Show(luba. ToString());
Tulemus: Loo, Uuenda

boolIsCreatable=vale;
if((permission&Permissions.Create)==Permissions.Create)
{
IsCreatable=true;
}
else
{
IsCreatable=vale;
}
MessageBox.Show(IsCreatable.ToString());
Tulemus: Tõsi

C# enumid kasutavad Flags funktsiooni, kus mitu väärtust salvestatakse ühte loendusmuutujasse
https://www.itsvse.com/thread-4661-1-1.html
(Allikas: Architect_Programmer)







Eelmine:System.MissingMethodException: 找不到方法:“Void Dapper.DynamicP...
Järgmine:Virtuaalse ja (abstraktse) abstrakti ja liidese sarnasused ja erinevused C#-is...
Postitatud 23.04.2019 08:28:32 |
Arutlege hoolikalt ja parandage koos! - T 23. aprill 2019 08:28:32 GMT+0800 (Hiina standardaeg)
Postitatud 11.11.2019 09:49:58 |
Kuidas ma saan kirjelduse mitme valikuga loetelule?
 Üürileandja| Postitatud 11.11.2019 11:00:19 |
Sinine taevas ja valged pilved postitatud 2019-11-11 09:49
Kuidas ma saan kirjelduse mitme valikuga loetelule?

Palun vaadake allolevat artiklit

C# Enum enum tüüpi operatsiooni laiendusklass
https://www.itsvse.com/thread-7286-1-1.html
(Allikas: Architect_Programmer)
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com