Visual BasicのFriendアクセス修飾子は、クラスのメンバー(メソッド、プロパティ、変数)が同じアセンブリ内でアクセス可能であるが、アセンブリの外ではアクセスできないことを定義します。C#のinternalに相当します。このアクセスレベルは、公開APIをオープンにしながら、コードの内部実装の「隠蔽」を保証するために役立ちます。
使用例:
' 同じプロジェクト/アセンブリ内 Friend Class InternalHelper Friend Sub Log(message As String) Console.WriteLine(message) End Sub End Class
InternalHelperクラスのメソッドは、現在のアセンブリ内でのみ呼び出すことができます。
Friendを使用する場合:
Friendアクセス修飾子とProtectedの違いは何ですか?Friendとして宣言されたメソッドは、別のアセンブリ内の継承されたクラスに表示されますか?
回答:
Protected Friend Sub MyMethod() ' アセンブリ内およびアセンブリ外の継承者にアクセス可能 End Sub
ストーリー
大規模なプロジェクトでは、すべてのサポートクラスのロジックがPublicとして宣言されており、外部の統合者に開放されていました。Friendに変更することで、モジュール外での内部メソッドの使用リスクが排除され、アーキテクチャの保守が簡素化されました。
ストーリー
アクセスエラーのため(Friendの代わりにProtectedを使用した)、同じプロジェクト内でモジュールテスト用の補助メソッドにアクセスできませんでしたが、クラスの階層外に配置されていました。便利なテストをサポートするためにFriendに修正しました。
ストーリー
ある開発者が別のアセンブリから読み込まれたプラグインにメソッドを公開するためにFriendを使用しようとしました。その結果、プラグインは必要なメソッドにアクセスできませんでした。解決策は、Publicメソッドを持つインターフェイスを実装し、Friendは内部のニーズのためのみに使用することでした。