1. ClassLibrary3
(1) AssemblyInfo.cs 添加
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("ConsoleApplication1")]
(2) Class1.cs
using System;
namespace ClassLibrary3
{
internal class Class1
{
public static void Print()
{
Console.WriteLine("This is Class1");
}
}
}
2. ConsoleApplication1
(1) Reference ClassLibrary3
(2) Program.cs
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ClassLibrary3.Class1.Print();
}
}
}
总结:ClassLibrary3中指定ConsoleApplication1为友元程序集 所以ClassLibrary3中的External类也能被ConsoleApplication1访问到。
构建程序集时可以使用在System.Runtime.CompilerServices命名空间中的一个名为InternalsVisableTo的Attriute来标明它认为是“友元”的其他程序集。这个Attriibute要获取一个字符串参数,这个字符串标识了友元程序集的名字和公钥,但不能包括版本、语言文化和处理器架构。