同一程序集的文件中可訪問,程序集是經由編譯器編譯得到的,供CLR進一步編譯執行的那個中間產物,在WINDOWS系統中,它一般表現為·dll或者是·exe的格式。
內部訪問通常用于基于組件的開發,因為它可使一組組件以私有方式進行協作,而不必向應用程序代碼的其余部分公開。
如果被調用的程序集, 在代碼中使用了InternalsVisibleToAttribute來標示一個或多個友元程序集, 那么這些被標為友元的程序集就可以訪問被調用程序集的internal方法。
// This file is for Assembly A.
using System.Runtime.CompilerServices;
using System;
[assembly: InternalsVisibleTo("AssemblyB")]
// The class is internal by default.
class FriendClass
{
public void Test()
{
Console.WriteLine("Sample Class");
}
}
// Public class that has an internal method.
public class ClassWithFriendMethod
{
internal void Test()
{
Console.WriteLine("Sample Method");
}
}
如果我們要調用的是第三方人寫的代碼里的internal的方法, 需要使用反射 (reflection)。