『究極のC#プログラミング』 Chapter11 フレンドアセンブリ

構造化プログラミングとオブジェクト指向プログラミングの中間にモジュール化プログラミングがある。
言語としてはModula-2が代表的。
モジュール化プログラミングには、スコープ制御が強力というメリットがある。
オブジェクト指向言語であるC#はpublicの無制限さとinternalの厳しさというデメリットがある。


スコープ制御は単体テストをする時にpublicにする必要があるということで問題になる。
この問題に対処するのがフレンドアセンブリである。
System.Runtime.CompilerServices名前空間のInternalsVisibleTo属性をアセンブリに追加する。
すると、アセンブリ内部のクラスやメソッドを指定したアセンブリから参照できるようになる。
(privateなメソッドなども参照可能になるわけではない)


フレンド アセンブリ (C# および Visual Basic)
http://msdn.microsoft.com/ja-jp/library/0tke9fxk(VS.100).aspx
InternalsVisibleTo 属性の設定
http://msdn.microsoft.com/ja-jp/library/bb385840.aspx


アクセス制御には、VSのインテリセンスの候補を減らし、目的の名前を選択しやすくするという明確なメリットもある。