内部

internal 关键字使同一程序集中的每个使用者都可以使用类(包括嵌套类),属性,方法或字段:

internal class Foo
{
    internal string SomeProperty {get; set;}
}

internal class Bar
{
    var myInstance = new Foo();
    internal string SomeField = foo.SomeProperty;

    internal class Baz
    {
        private string blah;
        public int N { get; set; }
    }
}

这可以被打破以允许测试程序集通过向 AssemblyInfo.cs 文件添加代码来访问代码:

using System.Runtime.CompilerServices;

[assembly:InternalsVisibleTo("MyTests")]