Friend-Assemblys (Visual Basic)
Aktualisiert: November 2007
Eine Friend-Assembly ist eine Assembly, der gestattet wird, auf die Friend-Typen und -Member einer anderen Assembly zuzugreifen. (Weitere Informationen finden Sie unter Friend (Visual Basic).) Wenn Sie eine Assembly als Friend-Assembly identifizieren, müssen Sie Typen und Member nicht mehr als öffentlich kennzeichnen, damit andere Assemblys auf sie zugreifen können. Dies ist insbesondere in den folgenden Szenarien nützlich:
Bei Komponententests, wenn Testcode in einer eigenen Assembly ausgeführt wird, jedoch Zugriff auf Member der zu testenden Assembly erfordert, die als Friend gekennzeichnet sind.
Beim Entwickeln einer Klassenbibliothek, wenn Erweiterungen der Bibliothek in eigenen Assemblys enthalten sind, jedoch Zugriff auf Member in vorhandenen Assemblys erfordern, die als Friend gekennzeichnet sind.
Hinweise
Mithilfe des InternalsVisibleToAttribute-Attributs können Sie eine oder mehrere Friend-Assemblys für eine bestimmte Assembly identifizieren. Wenn Sie beispielsweise das InternalsVisibleToAttribute-Attribut in Assembly A angeben und Assembly B als eine Friend-Assembly festlegen, kann Assembly B auf alle Typen und Member in Assembly A zugreifen, die als Friend gekennzeichnet sind, wie im folgenden Beispiel gezeigt.
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
Nur Assemblys, die Sie explizit als Friend-Assemblys angeben, können auf Friend-Typen und -Member zugreifen. Wenn beispielsweise Assembly B eine Friend-Assembly von Assembly A ist und Assembly C auf Assembly B verweist, kann C nicht auf die Friend-Typen in A zugreifen.
Der Compiler führt für den Namen der Friend-Assembly, der dem InternalsVisibleToAttribute-Attribut übergeben wird, einige grundlegende Überprüfungen durch. Wenn Assembly A Assembly B als Friend-Assembly deklariert, gelten die folgenden Validierungsregeln:
Wenn Assembly A einen starken Namen verwendet, muss auch Assembly B einen starken Namen verwenden. Der Name der Friend-Assembly, der dem Attribut übergeben wird, muss aus dem Assemblynamen und dem öffentlichen Schlüssel des Schlüssels mit starkem Namen bestehen, mit dem Assembly B signiert wird.
Der Name der Friend-Assembly, der dem InternalsVisibleToAttribute-Attribut übergeben wird, kann nicht der starke Name von Assembly B sein: Geben Sie für die Assembly weder die Version, die Kultur, die Architektur noch das öffentliche Schlüsseltoken an.
Wenn Assembly A keinen starken Namen verwendet, sollte der Name der Friend-Assembly nur aus dem Assemblynamen bestehen. Weitere Informationen finden Sie unter Gewusst wie: Erstellen von unsignierten Friend-Assemblys.
Wenn Assembly B einen starken Namen verwendet, müssen Sie für Assembly B in den Projekteinstellungen oder auf der Befehlszeile mithilfe der /keyfile-Compileroption den Schlüssel mit starkem Namen angeben. Weitere Informationen finden Sie unter Gewusst wie: Erstellen von signierten Friend-Assemblys.
Informationen zum Zugreifen auf die Friend-Typen und -Methoden einer Assembly aus einer Moduldatei (eine Datei mit der Erweiterung .netmodule) finden Sie unter /moduleassemblyname.
Sicherheitshinweis: |
---|
Das InternalsVisibleToAttribute-Attribut ist mit der StrongNameIdentityPermission-Klasse vergleichbar. Der Hauptunterschied liegt darin, dass von StrongNameIdentityPermission Sicherheitsberechtigungen für die Ausführung einzelner Codeabschnitte angefordert werden können, während das InternalsVisibleToAttribute-Attribut die Sichtbarkeit von als Friend definierten Typen und Membern steuert. |
Siehe auch
Aufgaben
Gewusst wie: Erstellen von unsignierten Friend-Assemblys
Gewusst wie: Erstellen von signierten Friend-Assemblys