Assemblage d’amis

Définition - Que signifie Friend Assembly?

Un assembly friend, en C #, fait référence à l'assembly .NET qui peut accéder aux membres d'un autre assembly. Les membres d'un assemblage auxquels on accède à partir de l'assemblage ami doivent être marqués comme
interne.

Les assemblys amis sont utilisés dans les scénarios où il est nécessaire d'accéder aux classes et aux membres internes d'un assembly à partir d'un autre assembly spécifique. Il permet à deux assemblys spécifiques de partager des membres ou des fonctionnalités sans les rendre publics.

Les assemblys amis sont également utilisés dans les tests unitaires où l'assembly sous-jacent au code de test doit accéder aux membres qui sont marqués comme internes dans l'assembly à tester. Il est utile dans le développement de bibliothèques de classes qui nécessitent des ajouts contenus dans des assemblys séparés qui doivent accéder aux membres des assemblys existants.

Definir Tech explique Friend Assembly

En marquant les membres d'une classe comme internes, ils sont visibles pour les autres classes au sein du même assembly, mais sont privés pour les classes qui résident en dehors de l'assembly. Pour accéder aux membres internes à partir d'un assembly friend, le nom de l'assembly friend doit être spécifié avec l'attribut InternalsVisibleToAttribute dans l'assembly où les membres internes sont définis. L'assembly Friend ne peut pas accéder aux types privés et aux membres privés.

Par exemple, InternalsVisibleToAttribute dans Assembly X peut être utilisé pour spécifier l'assembly Y en tant qu'assembly ami, afin que l'assembly Y puisse accéder à tous les types et membres de l'assembly X marqués comme internes.

Voici les directives relatives au développement d'assemblées d'amis:

  • Lors de l'utilisation d'assemblys signés, l'outil «sn.exe» peut être utilisé pour obtenir la clé publique qui doit être transmise à l'attribut spécifiant l'assembly friend
  • Lors de la compilation d'un assembly friend qui accède aux membres internes d'un autre assembly, l'option du compilateur (/ out) doit être définie avec le nom du fichier de sortie (.exe ou .dll)
  • Il est nécessaire de spécifier explicitement chaque assembly qui doit être ami pour l'assembly auquel il a besoin d'accéder
  • Il est suggéré d'utiliser des assemblages amis sans enfreindre les règles d'encapsulation

Cette définition a été écrite dans le contexte de C #