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

本文关键字:移动 重命名 命名空间 何使 Java 工作 包一样 | 更新日期: 2023-09-27 18:34:37

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

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

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

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

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

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

/myProject
  /extensions
     /MyExtensionMethodClass.cs

使用像 myProject 这样的命名空间(这样扩展方法就可以在 myProject 中的任何位置使用,而无需 using 指令(

这实际上是因为C#具有分部类的概念,也就是说,您可以将C#类沿着多个文件分发,而不是像Java那样将其编码为单个文件。出于这个原因,.Net中的命名空间是分布式容器,而不是由命名空间管理员定义的集中式容器。