如何使C#名称空间像Java包一样工作,以便在移动它们时自动重命名?

我来自Java,看到Java中的包非常方便。 将类移动到另一个包时,它将自动更改包。 (当然,由Eclipse或Netbean等IDE)

但是C#正在使用命名空间,并且没有像在Java中那样自动重命名我的命名空间。 例如,我有一个文件名,其命名空间是com.app ,我将它放在com.app ,但是稍后,我将此文件移动到com.lib文件夹,其命名空间仍然是com.app 。 因此,我发现这很难管理,因为我正在手动移动它。

请帮我解决我的问题。 (文件的命名空间由它包含的文件夹命名,当我移动到其他文件时,我会自动更改)。 我们能做到吗?

我通过使用名为Resharper的IDE插件解决了这个问题。 (在许多有用的function中)它突出显示命名空间错误时(基于程序集的文件夹层次结构和根命名空间)并可以为您修复它。

请注意,与Java不同,有时候非常有效的理由使类不在目录结构推断的名称空间中。 一个很好的例子可能是扩展方法类,它们需要在调用它们的类的范围内。 因此,通常有:

 /myProject /extensions /MyExtensionMethodClass.cs 

使用像myProject这样的命名空间(这样扩展方法可以在没有using指令的myProject中的任何地方使用)

这实际上是因为C#具有部分类的概念,也就是说,您可以将C#类分布在多个文件中,而不是仅将其编码到单个文件中,如Java。 因此,.Net中的命名空间是分布式容器,而不是由命名空间orperator定义的集中容器。