Der Modifikator Friend in Visual Basic bestimmt, dass ein Klassenmitglied (Methode, Eigenschaft, Variable) innerhalb einer Assembly zugänglich ist, jedoch außerhalb der Assembly nicht. Dies ist analog zu internal in C#. Diese Zugriffsstufe ist nützlich, um "Verborgenheit" der internen Implementierung des Codes bei Offenheit der öffentlichen APIs zu gewährleisten.
Beispiel für die Verwendung:
' Innerhalb eines Projekts/einer Assembly Friend Class InternalHelper Friend Sub Log(message As String) Console.WriteLine(message) End Sub End Class
Der Aufruf der Methoden der Klasse InternalHelper ist nur innerhalb der aktuellen Assembly möglich.
Wann Friend anwenden:
Wie unterscheidet sich der Zugriffsmodifikator Friend von Protected? Kann eine als Friend deklarierte Methode in einer abgeleiteten Klasse in einer anderen Assembly sichtbar sein?
Antwort:
Protected Friend Sub MyMethod() ' Innerhalb der Assembly und für Nachkommen außerhalb der Assembly zugänglich End Sub
Geschichte
In einem großen Projekt wurde die gesamte Logik der unterstützenden Klassen als Public deklariert, was sie externen Integratoren zugänglich machte. Die Umstellung auf Friend reduzierte das Risiko, interne Methoden außerhalb des Moduls zu verwenden, und erleichterte die Wartung der Architektur.
Geschichte
Aufgrund eines Zugriffsfehlers (Protected anstelle von Friend verwendet) waren Hilfsmethoden nicht für die Modultests verfügbar, die im selben Projekt, aber außerhalb der Klassenhierarchie platziert waren. Wir haben es auf Friend geändert, um komfortables Testen zu unterstützen.
Geschichte
Ein Entwickler versuchte, Friend zu verwenden, um Methoden für ein aus einer anderen Assembly geladenes Plug-in zugänglich zu machen. Infolgedessen hatten die Plug-ins keinen Zugriff auf die benötigten Methoden. Die Lösung — Implementierung von Schnittstellen mit Public-Methoden, Friend nur für interne Zwecke verwenden.