HOW TO:建立未簽署的 Friend 組件
更新:2007 年 11 月
這個範例會顯示如何將 Friend 組件 (Assembly) 與未簽署的組件搭配使用。
若要在 Visual Studio 中建立組件和 Friend 組件
建立名為 FriendAssembliesB 的 Windows Form 應用程式新專案。
在 [檔案] 功能表上,指向 [加入],然後按一下 [新增專案]。
按一下 [加入新的專案] 對話方塊中的 [類別庫],並將專案命名為 FriendAssembliesA。
以下列程式碼取代 FriendAssembliesA 專案中 Class1.vb 的內容。此程式碼會使用 InternalsVisibleToAttribute 屬性 (Attribute),將 FriendAssembliesB 宣告為 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
以滑鼠右鍵按一下 [方案總管] 中的 FriendAssembliesB 專案,然後按一下 [加入參考]。
在 [加入參考] 對話方塊中按一下 [專案] 索引標籤。按一下 [FriendAssembliesA],然後按一下 [確定]。
以滑鼠右鍵按一下 FriendAssembliesB 專案中的 Form1.vb,然後按一下 [檢視程式碼]。
將下列程式碼加入至 Form1 類別 (Class)。
因為 FriendAssembliesA 會將 FriendAssembliesB 指定為 Friend 組件,所以 FriendAssembliesB 中的程式碼可以存取 FriendAssembliesA 中的 Friend 型別和成員。
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
按 F5 編譯和執行專案。
程式會顯示包含 "Friend Assemblies Sample Class" 和 "Friend Assemblies Sample Method" 字串的訊息方塊。
安全性
InternalsVisibleToAttribute 屬性和 StrongNameIdentityPermission 類別之間有相似處。主要差異是 StrongNameIdentityPermission 可以要求安全性權限來執行特定程式碼區段,而 InternalsVisibleToAttribute 屬性則會控制 Friend 型別和成員的可視性。