2009-07-23 20 views
8

我一直有这样的想法,.NET中的根名称空间“System”主要用于那些不依赖于特定平台的东西。为什么Windows.Forms在系统而不是微软?

我想知道如果任何人有任何意见或见解,为什么Windows.Forms命名空间是在System而不是Microsoft因为它似乎在一个平台上相当根深蒂固。

(没有火焰战争或不必要的MS扑如果可能的话,请!:))

+5

实际上Windows.Forms也可以在Mono中使用,因此也为Mac OS X和$ your_linux_distribution编译。 – Residuum 2009-07-23 21:56:51

+0

不要担心火焰战争。这在这里很少见。这些答案会被低估,失去兴趣的速度很快。 – 2009-07-23 21:56:52

+1

有趣的问题 - 我也想知道MS如何决定系统中的内容以及微软的内容。系统中太多东西似乎与Windows绑定在一起,微软中的太多东西可以在其他平台上工作。 – Keith 2009-07-23 22:00:35

回答

13

我读的地方,该System.*命名空间是事情是核心.NET Framework的一部分,而Microsoft.*命名空间用于额外的“增值”可选附加功能或正在开发的东西。

编辑:

布拉德·艾布拉姆斯有一个关于它的讨论在他的博客What Does that .NET Namespace Mean: System.* and Microsoft.*

此外,从的Visual Basic 2005与.NET 3.0的程序员参考报价:

Microsoft根名称空间包含特定于Microsoft的项目。从理论上讲,任何供应商都可以实现翻译成中间语言(IL)代码的.Net语言。如果您要构建这样的语言,Microsoft名称空间中的项目通常不适用于您的语言。 System命名空间中的项目...对于用户而言对使用Microsoft语言的程序员来说是有用的,但是Microsoft命名空间中的项目可能不会有帮助。

这将意味着,如果我是做一个新的.NET语言,我将能够利用System.Windows.Forms命名空间,使用户界面,但我可能不会有Microsoft.*命名空间类多大用处。

+0

非常好的一点!从来没有这样想过,但它的合法性很有意义。 – mcjabberz 2009-07-24 13:45:09

1

我的猜测是:

微软设想的.NET架构具有可多平台的能力,但是他们只打算提供Windows平台的运行时环境。他们可能认为任何为其他平台提供运行时环境的人都会以可以使用System.Forms的方式实现它。运行时将处理本地实现之间的差异。

+0

考虑如何将System.Forms绑定到User32,这不是特别可信。 – EFraim 2009-07-23 22:00:50

+1

非常真实。我一直希望命名空间可能在实现之前就已经被构想出来了,而实现并不是他们所设想的。令人怀疑的是,我知道。 – 2009-07-23 22:04:47

+0

@EFraim不是。当然,这个实现并没有太多抽象,但是当你实现自己的运行时时,这并不是必须的 - 无论如何你都要替换整个事物。但是,尽管基本的用户界面的东西受到Windows的影响,但它并不与Windows绑定(除非你使用平台相关的东西,如重写'WndProc')。 Mono实现Windows.Forms与您的系统上的任何桌面管理器都可以很好地实现。 – Luaan 2017-01-25 14:35:14

0

仅仅因为“微软Windows”已被“Windows”忽略并不意味着“窗口”概念并不比微软更广泛。从原来的IBM PARC界面到Microsoft Windows,X11等所有的GUI实现都是指Windows和Form控件,它只是微软称它们特别的实现“Windows”。因此System.Windows.Forms似乎是正确的,因为窗口不必是“Windows”的一部分。可能它应该只是一个小写字母w。但是这会打破命名空间的命名规则。

+0

实际上,Windows.Forms专门针对Microsoft(R)Windows外观和感觉,而不是GTK#和Cocoa# – Residuum 2009-07-23 22:13:46

+0

其实我认为你得到Microsoft(R)Windows外观的原因是因为你使用的是Microsoft R)Windows。请参阅@adrianbanks的答案。 – 2009-07-23 22:27:55

+0

当我在Debian Sid中编译带有单声道的Windows.Forms时,我仍然可以获得Microsoft Windows的外观和感觉,类似于使用wine运行Microsoft Windows应用程序。 – Residuum 2009-07-24 16:03:52