同一程序集的文件中可訪問(wèn),程序集是經(jīng)由編譯器編譯得到的,供CLR進(jìn)一步編譯執(zhí)行的那個(gè)中間產(chǎn)物怔锌,在WINDOWS系統(tǒng)中,它一般表現(xiàn)為·dll或者是·exe的格式变过。
內(nèi)部訪問(wèn)通常用于基于組件的開(kāi)發(fā)埃元,因?yàn)樗墒挂唤M組件以私有方式進(jìn)行協(xié)作,而不必向應(yīng)用程序代碼的其余部分公開(kāi)媚狰。
如果被調(diào)用的程序集, 在代碼中使用了InternalsVisibleToAttribute來(lái)標(biāo)示一個(gè)或多個(gè)友元程序集, 那么這些被標(biāo)為友元的程序集就可以訪問(wèn)被調(diào)用程序集的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");
}
}
如果我們要調(diào)用的是第三方人寫(xiě)的代碼里的internal的方法, 需要使用反射 (reflection)。