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属性将内部类公开给另一个程序集。