Table des matières:
Définition - Que signifie Assembly ami?
Un assembly ami, en C #, fait référence à l'assembly .NET qui peut accéder aux membres d'un autre assembly. Les membres d'un assembly auxquels on accède à partir d'un assembly friend 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 internes et aux membres d'un assemblage à partir d'un autre assemblage 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'assemblage sous-jacent au code de test doit accéder aux membres qui sont marqués comme internes dans l'assemblage à 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.
Techopedia explique Friend Assembly
En marquant les membres d'une classe comme internes, ils sont visibles pour les autres classes 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 l'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 qui sont marqués comme internes.
Voici les lignes directrices 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 ami qui accède aux membres internes d'un autre assembly, l'option de compilation (/ 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 doit accéder
- Il est suggéré d'utiliser des assemblages amis sans enfreindre les règles d'encapsulation
