【问题标题】:header - like files in C#header - 类似于 C# 中的文件
【发布时间】:2011-01-20 15:58:39
【问题描述】:

有没有办法在 C# 中使用命名空间“伪造”头文件?据我所知,没有办法获得他们在 C++ 中提供的预处理;但我更喜欢它的组织方面,而不是在命名空间中包装类并依靠 IDE 来告诉我什么是什么

例如(注意不正确的语法) 假设

ns1.cs
iamaclass.cs
iamanotherclass.cs
yaclass.cs
yaaclass.cs

ns1.cs 的内容是:

namespace ns1
{
   extern class iamaclass;
   extern class iamanotherclass;

   namespace ns1-nested
   {
      extern class yaclass
      extern class yaaclass
   }
}

【问题讨论】:

  • 哇,有人渴望头文件!
  • 你到底想做什么?为什么要模拟头文件?他们提供了标准 C# 没有的什么?
  • 是的,我也不明白这到底是在解决什么问题。
  • 生成的文档是否无法提供无需依赖 IDE 即可查看程序集中内容的能力?
  • 此外,如果您想查看内容中的内容,请使用对象浏览器或 .NET Reflector。事实证明,这些工具远远优于必须通过 grep 查找头文件来查找定义(可能又隐藏在宏或嵌套的#includes 中)。

标签: c# namespaces namespace-organisation


【解决方案1】:

如果您使项目的目录结构与命名空间结构相匹配,这对获得组织收益大有帮助。现在您的项目文件和相关的目录结构包含您的“头”文件中提出的所有信息。

【讨论】:

  • 我一直在为我的项目这样做。部分我希望这主要来自 nogalista,但看到你所有的反应是.. 出乎意料?我想我想脱离常规是错误的。
  • 我认为反应是因为头文件实际上是对老一代编译器的回归,其中正确的依赖顺序和预编译头的缓存可以节省大量的构建时间。管理标头依赖项是另一项需要关注的任务,否则本可以专注于更高效的开发。随着 PC 变得越来越强大,构建时间的问题越来越少,因此像手动内存管理这样的头文件被视为被愉快地丢弃的工件。
【解决方案2】:

在 C# 中无法做到这一点。你能得到的最接近的方法是制作你的 ns1.cs 文件并用partial class .... 填充它,但这真的没有意义。那时你应该只写一个文档,因为你不会真正得到任何编译器的帮助来强制执行结构。

我会说这是一个“忘记你在 C++ 中是如何做到的”的案例。通常,找出命名空间中的内容并不重要,但更重要的是弄清楚某个类在哪个命名空间中,C# 的组织会完美地向您展示这一点。

最后一件小事:您是否有不想依赖 IDE 的实际原因,还是只是挑剔?很多开发都可以依靠 IDE 的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 2021-11-18
    • 2013-10-09
    • 1970-01-01
    • 2021-07-13
    相关资源
    最近更新 更多