Kazalo:
Opredelitev - Kaj pomeni skupščina prijateljev?
Prijateljeva sestava v C # se nanaša na sklop .NET, ki lahko dostopa do članov druge skupščine. Člani v skupščini, do katerih je dostop do skupščine prijateljev, morajo biti označeni kot
notranji.
Prijateljevi sklopi se uporabljajo v scenarijih, kjer je potreben dostop do notranjih razredov in članov v enem sklopu iz drugega posebnega sklopa. Omogoča dva posebna sklopa za izmenjavo članov ali funkcionalnosti, ne da bi jih javno objavili.
Prijateljski sklopi se uporabljajo tudi pri preskušanju enot, kjer mora sklop, na katerem temelji preizkusna koda, dostopati do članov, ki so v sestavu, ki ga je treba preizkusiti, imeti notranje oznake. Koristno je pri razvoju knjižnic razreda, ki zahtevajo dodatke, vsebovane v ločenih sklopih, ki potrebujejo dostop do članov v obstoječih sklopih.
Tehopedija razlaga skupščino prijateljev
Če člane razreda označijo kot notranje, so vidni drugim razredom istega sklopa, vendar so zasebni za razrede, ki prebivajo zunaj sklopa. Za dostop do notranjih članov iz skupščine prijateljev je treba ime sklopa prijateljev določiti z atributom InternalsVisibleToAttribute v sestavu, kjer so definirani notranji člani. Skupščina prijateljev ne more dostopati do zasebnih vrst in zasebnih članov.
Na primer, InternalsVisibleToAttribute v sestavi X se lahko uporabi za določitev sklopa Y kot skupščine prijateljev, tako da lahko skupščina Y dostopa do vseh vrst in članov sklopa X, ki so označeni kot notranji.
Sledijo smernice, povezane z razvojem prijateljskih sklopov:
- Med uporabo podpisanih sklopov lahko orodje 'sn.exe' uporabimo za pridobivanje javnega ključa, ki ga je treba posredovati atributu, ki določa skupino prijatelja
- Medtem ko pripravljate skupino prijateljev, ki dostopa do notranjih članov druge sestave, mora biti možnost (/ izhod) prevajalnika nastavljena z imenom izhodne datoteke (.exe ali .dll)
- Treba je izrecno določiti vsak sklop, ki mora biti prijatelj za sklop, do katerega potrebuje dostop
- Predlaga se uporaba prijateljskih sklopov, ne da bi se kršila pravila enkapsulacije