El modificador Friend en Visual Basic define que un miembro de la clase (método, propiedad, variable) es accesible dentro de una misma ensambladura, pero no fuera de ella. Es análogo a internal en C#. Este nivel de acceso es útil para asegurar la "ocultación" de la implementación interna del código mientras se mantiene la apertura de las API públicas.
Ejemplo de uso:
' Dentro de un mismo proyecto/ensambladura Friend Class InternalHelper Friend Sub Log(message As String) Console.WriteLine(message) End Sub End Class
La llamada a los métodos de la clase InternalHelper solo será posible dentro de la ensambladura actual.
Cuándo aplicar Friend:
¿Cuál es la diferencia entre el modificador de acceso Friend y Protected? ¿Puede un método declarado como Friend ser visible en una clase heredada en otra ensambladura?
Respuesta:
Protected Friend Sub MyMethod() ' Accesible dentro de la ensambladura y para herederos fuera de la ensambladura End Sub
Historia
En un gran proyecto, toda la lógica de las clases de soporte se declaró como Public, lo que las abría a los integradores externos. Cambiar a Friend eliminó el riesgo de usar métodos internos fuera del módulo y simplificó el mantenimiento de la arquitectura.
Historia
Debido a un error de acceso (se utilizó Protected en lugar de Friend), los métodos auxiliares no estaban disponibles para las pruebas unitarias, que estaban en el mismo proyecto pero fuera de la jerarquía de clases. Se corrigió a Friend para facilitar pruebas convenientes.
Historia
Un desarrollador intentó usar Friend para exponer métodos a un complemento cargado desde otra ensambladura. Como resultado, los complementos no tenían acceso a los métodos necesarios. La solución fue implementar interfaces con métodos Public, utilizando Friend solo para necesidades internas.