如何:创建未签名的友元程序集

更新:2007 年 11 月

本示例演示如何将友元程序集和未签名的程序集一起使用。

在 Visual Studio 中创建程序集和友元程序集

  1. 为 Windows 窗体应用程序创建一个新项目,将其命名为 FriendAssembliesB。

  2. 在“文件”菜单上指向“添加”,然后单击“新建项目”。

  3. 在“添加新项目”对话框中,单击“类库”,将项目命名为“FriendAssembliesA”。

  4. 用下面的代码替换 FriendAssembliesA 项目中的 Class1.vb 的内容。这段代码使用 InternalsVisibleToAttribute 属性将 FriendAssembliesB 声明为友元程序集。

    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
    
  5. 在“解决方案资源管理器”中右击 FriendAssembliesB 项目,然后单击“添加引用”。

  6. 在“添加引用”对话框中单击“项目”选项卡。单击“FriendAssembliesA”,然后单击“确定”。

  7. 右击 FriendAssembliesB 项目中的 Form1.vb,然后单击“查看代码”。

  8. 将下面的代码添加到 Form1 类中。

    因为 FriendAssembliesA 将 FriendAssembliesB 指定为友元程序集,所以 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
    
  9. 按 F5 编译并运行项目。

    该程序将显示一个消息框,其中包含字符串“Friend Assemblies Sample Class”和“Friend Assemblies Sample Method”。

安全性

InternalsVisibleToAttribute 属性和 StrongNameIdentityPermission 类之间存在相似性。主要差异在于:StrongNameIdentityPermission 可以要求具有安全权限才能运行特定的一段代码,而 InternalsVisibleToAttribute 属性则控制 Friend 类型和成员的可见性。

请参见

任务

如何:创建签名的友元程序集

概念

友元程序集 (Visual Basic)

参考

InternalsVisibleToAttribute