Assembly Friend (Visual Basic)
Aggiornamento: novembre 2007
Un assembly Friend è un assembly che ha il diritto di accedere ai tipi e ai membri Friend di un altro assembly. Per ulteriori informazioni, vedere Friend (Visual Basic). Se si identifica un assembly come assembly Friend, non è più necessario contrassegnare tipi e membri come pubblici per accedere ad essi da altri assembly. Questo è particolarmente utile negli scenari seguenti:
Durante gli unit test, quando il codice del test è in esecuzione in un assembly separato ma richiede l'accesso ai membri dell'assembly testato che è contrassegnato come Friend.
Durante lo sviluppo di una libreria di classi e le aggiunte alla libreria sono contenute in assembly separati ma richiedono l'accesso ai membri di assembly esistenti contrassegnati come Friend.
Osservazioni
Si utilizza l'attributo InternalsVisibleToAttribute per identificare uno o più assembly Friend per un determinato assembly. Ad esempio, se si include l'attributo InternalsVisibleToAttribute nell'assembly A e si specifica l'assembly B come assembly Friend, l'assembly B avrà accesso a tutti i tipi e i membri nell'assembly A contrassegnati come Friend, come illustrato nell'esempio seguente.
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
Solo assembly specificati in modo esplicito come Friend possono accedere ai tipi e ai membri Friend. Ad esempio, se l'assembly B è Friend per l'assembly A e l'assembly C fa riferimento all'assembly B, C non ha accesso ai tipi Friend in A.
Il compilatore esegue alcune convalide di base del nome dell'assembly Friend passato all'attributo InternalsVisibleToAttribute. Se l'assembly A dichiara B come assembly Friend, le regole di convalida sono le seguenti:
Se assembly A possiede un nome sicuro, anche l'assembly B deve avere un nome sicuro. Il nome dell'assembly Friend passato all'attributo deve essere costituito dal nome dell'assembly e dalla chiave pubblica della chiave con nome sicuro utilizzata per firmare l'assembly B.
Il nome dell'assembly Friend passato all'attributo InternalsVisibleToAttribute non può essere il nome sicuro dell'assembly B: non includono la versione dell'assembly, le impostazioni cultura, l'architettura, o il token di chiave pubblica.
Se l'assembly A non dispone di un nome sicuro, il nome dell'assembly Friend deve essere costituito solo dal nome dell'assembly. Per ulteriori informazioni, vedere Procedura: creare assembly Friend non firmati.
Se l'assembly B ha un nome sicuro, è necessario specificare la chiave con nome sicuro per l'assembly B utilizzando l'impostazione di progetto o l'opzione del compilatore /keyfile della riga di comando. Per ulteriori informazioni, vedere Procedura: creare assembly Friend firmati.
Per informazioni sull'accesso ai tipi e membri di un assembly Friend da un file di un modulo (un file con estensione .netmodule), vedere /moduleassemblyname.
Nota sulla sicurezza: |
---|
Ci sono somiglianze tra l'attributo InternalsVisibleToAttribute e la classe StrongNameIdentityPermission. La differenza principale è che StrongNameIdentityPermission può esigere autorizzazioni di sicurezza per eseguire una particolare sezione di codice, mentre l'attributo InternalsVisibleToAttribute controlla la visibilità dei membri e dei tipi Friend. |
Vedere anche
Attività
Procedura: creare assembly Friend non firmati
Procedura: creare assembly Friend firmati