背景
假如,有一些接口只想内部调用,不想外部代码调用,仅用internal是不够的。
但C#中没有类似于friend的权限,只能根据Internal权限来模拟类似于c++的friend权限。
实现
- 所有需要内部调用的接口权限声明为internal
- 所有需要互相调用内部接口的函数封装到同一个class,利用c#的partial关键字。如下:
//file1
public sealed partial class MyScope {
public class TestClass {
static void MyInterface(){}
}
}
//file2
public partial class MyScope {
public class TestClass2() {
void MyInterface2() {
TestClass.MyInterface();
}
}
}
- 哪怕定义在不同的文件,因为TestClass和TestClass2在同一个命名空间MyScope下,可以互相调用各自的internal权限接口