Практическое руководство. Создание неподписанных дружественных сборок
Обновлен: Ноябрь 2007
В этом примере показано использование дружественных сборок с неподписанными сборками.
Для создания сборки и дружественной сборки в Visual Studio
Создайте новый проект для приложения Windows Forms с именем FriendAssembliesB.
В меню Файл выберите пункт Добавить, а затем щелкните Новый проект.
В диалоговом окне Добавление нового проекта щелкните Библиотека классов и назовите проект FriendAssembliesA.
Замените содержимое 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
В Обозреватель решений щелкните правой кнопкой мыши по проекту FriendAssembliesB и выберите Добавить ссылку.
Перейдите на вкладку Проекты в диалоговом окне Добавить ссылку. Нажмите FriendAssembliesA и нажмите кнопку OK .
Щелкните правой кнопкой мыши Form1.vb в проекте FriendAssembliesB, и затем щелкните Просмотреть код .
Добавьте следующий код в класс 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
Нажмите клавишу F5 чтобы скомпилировать и запустить программу.
Программа отображает окно сообщения, содержащее строки "Friend Assemblies Sample Class" и "Friend Assemblies Sample Method".
Безопасность
Существуют сходства между атрибутом InternalsVisibleToAttribute и классом StrongNameIdentityPermission. Главное различие состоит в том, что StrongNameIdentityPermission может потребовать разрешения безопасности для выполнения определенного раздела кода, тогда как атрибут InternalsVisibleToAttribute контролирует видимость Friend типов и членов.
См. также
Задачи
Практическое руководство. Создание подписанных дружественных сборок
Основные понятия
Дружественные сборки (Visual Basic)