Comment : créer des assemblys friend non signés
Mise à jour : novembre 2007
Cet exemple indique comment utiliser des assemblys friend avec les assemblys non signés.
Pour créer un assembly et un assembly friend dans Visual Studio
Créez un projet pour une application Windows Forms nommée FriendAssembliesB.
Dans le menu Fichier, pointez sur Ajouter, puis cliquez sur Nouveau projet.
Dans la boîte de dialogue Ajouter un nouveau projet, cliquez sur Bibliothèque de classes et nommez le projet FriendAssembliesA.
Remplacez le contenu de Class1.vb dans le projet FriendAssembliesA par le code suivant. Le code utilise l'attribut InternalsVisibleToAttribute pour déclarer FriendAssembliesB en tant qu'assembly friend.
Imports System.Runtime.CompilerServices <Assembly: InternalsVisibleTo("FriendAssembliesB")> ' Friend class. Friend Class FriendAssembliesA Public Sub Test() MsgBox("Friend Assemblies Sample Class") End Sub End Class ' Public class with a Friend method. Public Class FriendAssembliesClassA Friend Sub Test() MsgBox("Friend Assemblies Sample Method") End Sub End Class
Cliquez avec le bouton droit sur le projet FriendAssembliesB dans l'Explorateur de solutions puis cliquez sur Ajouter une référence.
Dans la boîte de dialogue Ajouter une référence, cliquez sur l'onglet Projets. Cliquez sur FriendAssembliesA puis cliquez sur OK.
Cliquez avec le bouton droit sur Form1.vb dans le projet FriendAssembliesB, puis cliquez sur Afficher le code.
Ajoutez le code suivant à la classe Form1 :
Dans la mesure où FriendAssembliesA a spécifié FriendAssembliesB comme assembly friend, le code figurant dans FriendAssembliesB peut accéder aux membres et aux types Friend à partir de FriendAssembliesA.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles MyBase.Load ' Access a Friend class. Dim friendTest1 As New FriendAssembliesA friendTest1.Test() Dim friendTest2 As New FriendAssembliesClassA ' Access a Friend method. friendTest2.Test() End Sub
Appuyez sur F5 pour compiler et exécuter le projet.
Le programme affiche des zones de message contenant les chaînes « Friend Assemblies Sample Class » (Exemple de classe d'assemblys friend) et « Friend Assemblies Sample Method » (Exemple de méthode d'assemblys friend).
Sécurité
Il existe des ressemblances entre l'attribut InternalsVisibleToAttribute et la classe StrongNameIdentityPermission. La différence principale est que StrongNameIdentityPermission peut demander des autorisations de sécurité pour exécuter une section particulière de code, alors que l'attribut InternalsVisibleToAttribute contrôle la visibilité des types et des membres Friend.
Voir aussi
Tâches
Comment : créer des assemblys Friend signés
Concepts
Assemblys friend (Visual Basic)