InternalsVisibleTo
アクセス修飾子としてinternalを付けると同一アセンブリ内からしかアクセス出来なくなります。しかし、ユニットテストとかからは例外的に呼び出したいこともあります。そんな時にInternalsVisibleTo属性が使えるみたいです。
using System; using System.Runtime.CompilerServices; [assembly : InternalsVisibleTo("App")] internal class InternalLib { internal InternalLib() {} internal void InternalMethod() {} }
とかすると、アセンブリ「App」からはinternalなクラスやメソッドにアクセスできるようなります。ただし、コンパイルするときは、
$ csc /r:InternalLib.dll /out:App.exe App.cs
のように出力アセンブリ名を明示する必要があります。