方法 : 署名のないフレンド アセンブリを作成する
更新 : 2007 年 11 月
次の例は、署名のないアセンブリと共にフレンド アセンブリを使用する方法を示しています。
Visual Studio でアセンブリとフレンド アセンブリを作成するには
FriendAssembliesB という名前の Windows フォーム アプリケーション用に、新しいプロジェクトを作成します。
[ファイル] メニューの [追加] をポイントし、[新しいプロジェクト] をクリックします。
[新しいプロジェクトの追加] ダイアログ ボックスで、[クラス ライブラリ] をクリックし、プロジェクト名として「FriendAssembliesA」と入力します。
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
ソリューション エクスプローラで FriendAssembliesB プロジェクトを右クリックし、[参照の追加] をクリックします。
[参照の追加] ダイアログ ボックスの [プロジェクト] タブをクリックします。FriendAssembliesA をクリックし、[OK] をクリックします。
FriendAssembliesB プロジェクトで Form1.vb を右クリックし、[コードの表示] をクリックします。
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
F5 キーを押してプロジェクトをコンパイルおよび実行します。
プログラムは、"Friend Assemblies Sample Class" および "Friend Assemblies Sample Method" という文字列を含むメッセージ ボックスを表示します。
セキュリティ
InternalsVisibleToAttribute 属性と StrongNameIdentityPermission クラスには、いくつかの類似点があります。主な違いは、StrongNameIdentityPermission は特定のコード セクションを実行するのにセキュリティ アクセス許可を要求し、InternalsVisibleToAttribute 属性は Friend 型とそのメンバの参照可能範囲を制御するという点です。