Inhoudsopgave:
Definitie - Wat betekent Friend Assembly?
Een vriendenassemblage in C # verwijst naar de .NET-assemblage die toegang heeft tot de leden van een andere assemblage. Leden in een vergadering die toegankelijk zijn via een vriendenassemblage moeten worden gemarkeerd als
intern.
Vriendenassemblages worden gebruikt in scenario's waarbij toegang nodig is tot interne klassen en leden in de ene assemblage vanuit een andere specifieke assemblage. Hiermee kunnen twee specifieke vergaderingen leden of functionaliteit delen zonder ze openbaar te maken.
Vriendassemblages worden ook gebruikt bij het testen van eenheden waarbij de assemblage die aan de testcode ten grondslag ligt toegang moet hebben tot de leden die in de te testen assemblage als intern zijn gemarkeerd. Het is nuttig bij de ontwikkeling van klassenbibliotheken die toevoegingen vereisen die zijn opgenomen in afzonderlijke samenstellingen die toegang moeten hebben tot leden in bestaande samenstellingen.
Techopedia legt Friend Assembly uit
Door leden van een klasse als intern te markeren, zijn ze zichtbaar voor andere klassen binnen dezelfde assembly, maar zijn ze privé voor klassen die zich buiten de assembly bevinden. Om toegang te krijgen tot de interne leden van een vriendenassemblage, moet de naam van de vriendenassemblage worden opgegeven met het kenmerk InternalsVisibleToAttribute in de assemblage waarin de interne leden zijn gedefinieerd. Vriendenassemblage heeft geen toegang tot privétypen en privéleden.
InternalsVisibleToAttribute in Assembly X kan bijvoorbeeld worden gebruikt om Assembly Y op te geven als vriendenassemblage, zodat Assembly Y toegang heeft tot alle typen en leden van Assembly X die zijn gemarkeerd als intern.
Hier volgen de richtlijnen met betrekking tot de ontwikkeling van vriendenassemblages:
- Terwijl ondertekende assemblages worden gebruikt, kan de tool 'sn.exe' worden gebruikt om de openbare sleutel te krijgen die moet worden doorgegeven aan het kenmerk dat vriendenassemblage opgeeft
- Tijdens het compileren van een vriendenassemblage die toegang heeft tot interne leden van een andere assemblage, moet de compileroptie (/ out) worden ingesteld met de naam van het uitvoerbestand (.exe of .dll)
- Het is noodzakelijk om expliciet elke assembly op te geven die een vriend moet zijn voor de assembly waartoe deze toegang nodig heeft
- Er wordt voorgesteld om vriendenassemblages te gebruiken zonder de regels van inkapseling te overtreden
