Asamblea de amigos

Definición: ¿Qué significa Asamblea de amigos?

Un ensamblado amigo, en C #, se refiere al ensamblado .NET que puede acceder a los miembros de otro ensamblado. Los miembros de una asamblea a la que se accede desde una asamblea de amigos deben marcarse como
interno.

Los ensamblados amigos se utilizan en escenarios donde es necesario acceder a clases y miembros internos en un ensamblado desde otro ensamblado específico. Permite que dos ensamblados específicos compartan miembros o funcionalidad sin hacerlos públicos.

Los ensamblados amigos también se utilizan en pruebas unitarias donde el ensamblado subyacente al código de prueba necesita acceder a los miembros que están marcados como internos en el ensamblaje que se va a probar. Es útil en el desarrollo de bibliotecas de clases que requieren adiciones contenidas en ensamblajes separados que necesitan acceder a miembros en ensamblajes existentes.

Techinfo explica la Asamblea de amigos

Al marcar los miembros de una clase como internos, son visibles para otras clases dentro del mismo ensamblado, pero son privados para las clases que residen fuera del ensamblado. Para acceder a los miembros internos desde un ensamblado amigo, se debe especificar el nombre del ensamblado amigo con el atributo InternalsVisibleToAttribute en el ensamblado donde se definen los miembros internos. La asamblea de amigos no puede acceder a tipos privados y miembros privados.

Por ejemplo, InternalsVisibleToAttribute en Assembly X se puede usar para especificar Assembly Y como ensamblado amigo, de modo que Assembly Y pueda acceder a todos los tipos y miembros de Assembly X que están marcados como internos.

Las siguientes son las pautas relacionadas con el desarrollo de asambleas de amigos:

  • Al usar ensamblados firmados, la herramienta 'sn.exe' se puede usar para obtener la clave pública que debe pasarse al atributo que especifica el ensamblado amigo
  • Al compilar un ensamblado amigo que accede a los miembros internos de otro ensamblado, la opción del compilador (/ out) debe configurarse con el nombre del archivo de salida (.exe o .dll)
  • Es necesario especificar explícitamente cada ensamblado que debe ser amigo del ensamblado al que necesita acceso.
  • Se sugiere usar ensamblados amigos sin romper las reglas de encapsulación

Esta definición se escribió en el contexto de C #