ProgrammatieVB.NET Midden/Lead ontwikkelaar

Leg uit hoe de toegangsmode Friend werkt in Visual Basic, geef een voorbeeld van het gebruik ervan en geef situaties aan waarin Friend de voorkeur heeft boven andere toegangsmodes.

Slaag voor sollicitatiegesprekken met de Hintsage AI-assistent

Antwoord.

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:

  • Voor klassen/methoden die toegankelijk moeten zijn voor andere delen van de applicatie, maar niet voor externe modules/bibliotheken.
  • Voor de implementatie van toegangspatronen (bijvoorbeeld het testen van interne componenten).

Bedrieglijke vraag.

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:

  • Friend — alleen toegankelijk binnen zijn eigen assembly (ongeacht overerving).
  • Protected — alleen toegankelijk in afgeleide klassen (ongeacht de assembly).
  • Een methode met Friend-niveau zal niet toegankelijk zijn voor afgeleide klassen die zich buiten de huidige assembly bevinden. Als toegang zowel in de overerving als binnen de assembly nodig is — gebruik dan Protected Friend.
Protected Friend Sub MyMethod() ' Toegankelijk binnen assembly en voor erfgenamen buiten assembly End Sub

Voorbeelden van echte fouten door onwetendheid over de nuances van het onderwerp.


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.