使同一文件夹中的类成为“朋友”的访问修饰符
本文关键字:朋友 访问 文件夹 | 更新日期: 2023-09-27 18:03:53
是否存在访问修饰符(如public, private等),使同一名称空间(在同一文件夹中)中的所有类成为朋友?
的例子:
namespace MYPROJ.As {
public class A {
_______ A() {....}
}
}
namespace MYPROJ.As {
public class B {
public DoSomething() {
new A(); //I WANT THIS TO WORK
}
}
}
namespace MYPROJ.Cs {
public class C {
public DoSomething() {
new A(); //I DON'T WANT THIS TO WORK
}
}
}
编辑
我只希望B能够实例化a,我该怎么做呢?
如果你说的"文件夹"指的是"命名空间" -不是。所有。net访问修饰符都与名称空间无关。
基本上控制可访问性的是:
- 在同一个类中(私有访问)
- 嵌套在另一个类中(对包含类的私有访问)
- 在同一装配(内部访问)
- 在另一个通过
InternalsVisibleTo
(内部访问)访问的装配中 - 作为另一个类的子类(受保护的访问基类成员,在稍微复杂的规则中)
- 其他(公共访问)
也有protected internal
,但我永远不记得哪一种方式是有效的,我几乎从不使用它:)
所以如果你可以把类C放到不同的程序集中 a和B(它们彼此在同一个程序集中),那么你可以使构造函数a internal
并得到你想要的结果。
内部是你要找的
不完全是,但有internal
,它限制访问类在同一程序集(即项目)。