Indholdsfortegnelse:
Definition - Hvad betyder Friend Assembly?
En venssamling, i C #, henviser til .NET-forsamlingen, der kan få adgang til medlemmerne af en anden samling. Medlemmer i en forsamling, der er adgang til fra venstemontagen, skal markeres som
indre.
Venssamlinger bruges i scenarier, hvor der er behov for adgang til interne klasser og medlemmer i en samling fra en anden specifik samling. Det giver to specifikke samlinger mulighed for at dele medlemmer eller funktionalitet uden at offentliggøre dem.
Venssamlinger bruges også til enhedsafprøvning, hvor den samling, der ligger til grund for testkoden, har brug for at få adgang til de medlemmer, der er markeret som interne i den enhed, der skal testes. Det er nyttigt i udvikling af klassebiblioteker, der kræver tilføjelser indeholdt i separate samlinger, som har brug for adgang til medlemmer i eksisterende samlinger.
Techopedia forklarer Friend Assembly
Ved at markere medlemmer af en klasse som interne er de synlige for andre klasser inden for den samme samling, men er private for klasser, der bor uden for forsamlingen. For at få adgang til de interne medlemmer fra en venhedssamling skal navnet på enhedssamlingen specificeres med attributten InternalsVisibleToAttribute i den samling, hvor de interne medlemmer er defineret. Venssamling har ikke adgang til private typer og private medlemmer.
For eksempel kan InternalsVisibleToAttribute i Assembly X bruges til at specificere Assembly Y som venstemontering, så Assembly Y kan få adgang til alle typer og medlemmer af Assembly X, der er markeret som interne.
Følgende er retningslinjerne i forbindelse med udvikling af venhedssamlinger:
- Når du bruger underskrevne samlinger, kan værktøjet 'sn.exe' bruges til at få den offentlige nøgle, der skal overføres til det attribut, der specificerer venstelementet
- Når du kompilerer en venhedsenhed, der får adgang til interne medlemmer af en anden samling, skal kompilatorindstillingen (/ ud) indstilles med navnet på outputfilen (.exe eller .dll)
- Det er nødvendigt at specificere eksplicit hver samling, der skal være ven for den samling, den har brug for adgang til
- Det anbefales at bruge venhedssamlinger uden at bryde reglerne for indkapsling
