次の方法で共有


方法 : 署名のないフレンド アセンブリを作成する

更新 : 2007 年 11 月

次の例は、署名のないアセンブリと共にフレンド アセンブリを使用する方法を示しています。

Visual Studio でアセンブリとフレンド アセンブリを作成するには

  1. FriendAssembliesB という名前の Windows フォーム アプリケーション用に、新しいプロジェクトを作成します。

  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 をクリックし、[OK] をクリックします。

  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