Поделиться через


Практическое руководство. Создание неподписанных дружественных сборок

Обновлен: Ноябрь 2007

В этом примере показано использование дружественных сборок с неподписанными сборками.

Для создания сборки и дружественной сборки в Visual Studio

  1. Создайте новый проект для приложения Windows Forms с именем FriendAssembliesB.

  2. В меню Файл выберите пункт Добавить, а затем щелкните Новый проект.

  3. В диалоговом окне Добавление нового проекта щелкните Библиотека классов и назовите проект FriendAssembliesA.

  4. Замените содержимое Class1.vb в проекте FriendAssembliesA на следующий код. Этот код использует атрибут 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 и нажмите кнопку OK .

  7. Щелкните правой кнопкой мыши Form1.vb в проекте FriendAssembliesB, и затем щелкните Просмотреть код .

  8. Добавьте следующий код в класс Form1.

    Поскольку FriendAssembliesA задает FriendAssembliesB как дружественную сборку, то код в FriendAssembliesB может получить доступ к Friend типам и членам из 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
    
  9. Нажмите клавишу F5 чтобы скомпилировать и запустить программу.

    Программа отображает окно сообщения, содержащее строки "Friend Assemblies Sample Class" и "Friend Assemblies Sample Method".

Безопасность

Существуют сходства между атрибутом InternalsVisibleToAttribute и классом StrongNameIdentityPermission. Главное различие состоит в том, что StrongNameIdentityPermission может потребовать разрешения безопасности для выполнения определенного раздела кода, тогда как атрибут InternalsVisibleToAttribute контролирует видимость Friend типов и членов.

См. также

Задачи

Практическое руководство. Создание подписанных дружественных сборок

Основные понятия

Дружественные сборки (Visual Basic)

Ссылки

InternalsVisibleToAttribute