De toegangsmode Friend in Visual Basic definieert dat een lid van een klasse (methode, eigenschap, variabele) toegankelijk is binnen dezelfde assembly, maar niet buiten de assembly. Dit is gelijk aan internal in C#. Dit toegangsniveau is nuttig voor het waarborgen van de "verborgenheid" van de interne implementatie van code terwijl het publieke API's open blijven.
Voorbeeld van gebruik:
' Binnen één project/assembly Friend Class InternalHelper Friend Sub Log(message As String) Console.WriteLine(message) End Sub End Class
Het aanroepen van de methoden van de klasse InternalHelper is alleen mogelijk binnen de huidige assembly.
Wanneer Friend toe te passen:
Wat is het verschil tussen de toegangsmode Friend en Protected? Kan een methode die als Friend is verklaard zichtbaar zijn in een afgeleide klasse in een andere assembly?
Antwoord:
Protected Friend Sub MyMethod() ' Toegankelijk binnen assembly en voor erfgenamen buiten assembly End Sub
Verhaal
In een groot project was alle logica van ondersteunende klassen verklaard als Public, wat hen opende voor externe integrators. Het omzetten naar Friend verwijderde het risico op het gebruik van interne methoden buiten de module en vergemakkelijkte het onderhoud van de architectuur.
Verhaal
Door een toegangsfout (gebruikten Protected in plaats van Friend), waren ondersteunende methoden niet toegankelijk voor unit tests die in hetzelfde project waren geplaatst, maar buiten de hiërarchie van klassen. We hebben het aangepast naar Friend om comfortabel testen te ondersteunen.
Verhaal
Een ontwikkelaar probeerde Friend te gebruiken om methoden bloot te stellen aan een plug-in die vanuit een andere assembly werd geladen. Als gevolg hiervan hadden de plug-ins geen toegang tot de benodigde methoden. Oplossing — implementeren van interfaces met Public-methoden, Friend alleen voor interne behoeften gebruiken.