C# 如何将类隐藏到外部名称空间?类似于Java中的包保护修饰符

C# 如何将类隐藏到外部名称空间?类似于Java中的包保护修饰符,c#,namespaces,C#,Namespaces,在java中,很容易从包(命名空间)外部“隐藏”类,因为您可以将它们定义为包保护的。在C#中似乎没有等效的关键字修饰符。我有没有办法模仿C#中的这种行为?我有几个课程,我真的不想让大会的其他人知道。相同名称空间中的类可以知道,但我希望它们对库/应用程序的其余部分隐藏 我知道internal关键字,但只有当您试图从程序集外部访问类时,才会隐藏它们。这并不是我的情况,因为我想把所有东西都粘在一个.DLL/.EXE中 谢谢我能想到的实现这一点的唯一方法是将您希望“打包”私有的类与使用您确实希望公开的类

在java中,很容易从包(命名空间)外部“隐藏”类,因为您可以将它们定义为包保护的。在C#中似乎没有等效的关键字修饰符。我有没有办法模仿C#中的这种行为?我有几个课程,我真的不想让大会的其他人知道。相同名称空间中的类可以知道,但我希望它们对库/应用程序的其余部分隐藏

我知道
internal
关键字,但只有当您试图从程序集外部访问类时,才会隐藏它们。这并不是我的情况,因为我想把所有东西都粘在一个.DLL/.EXE中


谢谢

我能想到的实现这一点的唯一方法是将您希望“打包”私有的类与使用您确实希望公开的类的类一起放入一个单独的程序集中。将有问题的类标记为内部类,它们只对项目中真正需要它的部分可见


考虑到您需要在一个程序集中执行此操作,我倾向于认为程序集执行的操作太多,这样的重构可能是有益的。

程序集执行的操作不太多。这是一个相当小的程序集,但我想在外部名称空间中隐藏许多“实现”类。有没有办法通过Visual Studio在同一个.dll中拥有不同的程序集?@Owneded:您可以使用ILMerge()作为编译后步骤,将多个程序集合并到一个dll/exe.Hmm中,这似乎很有用。尽管如此,对于这样简单的事情,似乎还有很多工作要做:(