1. ホーム
  2. c#

[解決済み】C#の "internal "キーワードの実用的な使い方

2022-03-24 15:37:47

質問

の実用的な使い方を教えてください。 internal というキーワードをC#で使うことはできますか?

というのは知っていますが internal 修飾子は現在のアセンブリへのアクセスを制限しますが、いつ、どのような状況で使用すべきでしょうか?

どのように解決するのですか?

同じアセンブリ内の他の多くのクラスからアクセスしたいが、他のアセンブリのコードがアクセスできないようにしたいユーティリティまたはヘルパークラス/メソッド。

から MSDN (via archive.org)です。

<ブロッククオート

内部アクセスは、コンポーネントベースの開発でよく使われます。なぜなら、コンポーネントのグループは、アプリケーションコードの残りの部分に公開されることなく、プライベートな方法で協力することができるからです。例えば、グラフィカルユーザーインターフェースを構築するフレームワークでは、内部アクセスのメンバを使用して協力するControlとFormクラスを提供することができます。これらのメンバーは内部的なものなので、フレームワークを使用しているコードに公開されることはありません。

また、internal修飾子と一緒に InternalsVisibleTo アセンブリ・レベル属性を使用して、ターゲット・アセンブリの内部クラスへの特別なアクセス権が付与された "friend" アセンブリを作成することができます。

これは、テスト対象のアセンブリの内部メンバの呼び出しを許可されたユニットテストアセンブリを作成するのに便利です。 もちろん、他のアセンブリにはこのレベルのアクセスは許可されないので、システムをリリースする際にもカプセル化は維持されます。