C#内部访问修饰符

我想在命名空间中密封类。 我正在查看“内部”访问修饰符,但这似乎只是在程序集中的类密封。 我可以在命名空间中封装类吗?

或者我必须将东西移动到单独的组件中? 但后来我会遇到视觉工作室拒绝循环assembly参考的问题。

不,没有特定于命名空间的修饰符。 一种选择是使用inheritance和“受保护”修饰符,但在基类上有一个内部构造函数,以便外部代码不能将其子类化。 这可能有所帮助。

使用C#是不可能的。

命名空间级别的成员只能是public成员或internal

但是,您可以在C#中使用嵌套类

 namespace A { public class B { protected class C { } } public class D { void E() { var F = new AB(); // ok! var G = new ABC(); // error! } } } 

您仍然可以使用internal关键字,并通过AssemblyInfo.cs文件中的InternalsVisibleTo属性将内部类公开给另一个程序集。