Sadržaj:
Definicija - Što znači Skupština prijatelja?
Sastanak prijatelja u C # odnosi se na .NET sklop koji može pristupiti članovima druge skupštine. Članovi u skupštini kojima pristupaju skupštine prijatelja moraju biti označeni kao
unutarnje.
Prijateljski sklopovi koriste se u scenarijima u kojima postoji potreba za pristupom internim klasama i članovima u jednom skupu iz drugog određenog sklopa. Omogućuje dvije posebne skupštine za dijeljenje članova ili funkcionalnosti bez da ih čine javnim.
Sastav prijatelja koristi se i za testiranje jedinice gdje sklop koji stoji na temelju ispitnog koda treba pristupiti članovima koji su označeni kao unutarnji u sklopu koji se testira. Korisno je u razvoju knjižnica klase koje zahtijevaju dopune sadržane u zasebnim sklopovima kojima je potrebno pristupiti članovima u postojećim skupštinama.
Tehopedija objašnjava skupštinu prijatelja
Označavanjem članova klase kao unutarnjim, oni su vidljivi drugim klasama unutar istog sklopa, ali privatni su za klase koje žive izvan skupa. Za pristup unutarnjim članovima iz sklopa prijatelja, ime skupštine prijatelja treba biti navedeno atributom InternalsVisibleToAttribute u skupštini u kojoj su definirani unutarnji članovi. Skupština prijatelja ne može pristupiti privatnim tipovima i privatnim članovima.
Na primjer, InternalsVisibleToAttribute u Skupštini X može se koristiti za navođenje Skupštine Y kao skupštine prijatelja, tako da Skupština Y može pristupiti svim vrstama i članovima Skupštine X koji su označeni kao unutarnji.
Slijede upute za razvoj prijateljskih sklopova:
- Dok koristite potpisane sklopove, alat 'sn.exe' može se koristiti za dobivanje javnog ključa koji mora biti proslijeđen atributu koji određuje skup prijatelja
- Dok sastavljate sklop prijatelja koji pristupa unutarnjim članovima druge skupštine, opcija (/ izlaz) prevodilaca mora biti postavljena s imenom izlazne datoteke (.exe ili .dll)
- Potrebno je izričito odrediti svaki skup koji treba biti prijatelj za skupštinu kojoj treba pristup
- Predlaže se korištenje prijateljskih sklopova bez kršenja pravila enkapsulacije