9

ASP.NET 具有允许您在 web.config 中声明隐式使用的命名空间的功能。

<configuration>
 <system.web>
  <pages>
   <namespaces>
    <add namespace="System.Web.Mvc"/>
   </namespaces>
  </pages>
 </system.web>
</configuration>

我很想知道其他 .net 环境(如 winforms、控制台应用程序,特别是 silverlight 应用程序)的配置是否具有此功能。 如果是这样,那么后续问题是我们是否能够在所述配置中为命名空间命名。

这段代码的模拟,但通过配置:

using MyNamespace = System.Web.Mvc;

编辑:我的意图来自于查看诸如silversprite 之类的项目,该项目旨在为 Silverlight 的 XNA 提供相同的 API。这允许您编写一次 XNA 游戏,然后使用 silverlight 将其部署到网络上。唯一的问题是所有 Silversprite 版本的 API 都位于不同的命名空间中,因此要使用它,您需要在 using 语句周围使用 ifdef。如果可以简单地为 silversprite 命名空间起别名,这样您的代码就不必在平台之间更改,那将是非常棒的。

4

1 回答 1

12

不可以。编译时需要命名空间。只有在“晚”完成编译(如在 ASP.NET 中)的情况下,这才有意义。

如果代码已经编译,那么在执行时添加命名空间意味着什么?

真的using只是在选择避免在每个文件的顶部编写一堆指令之后吗?如果是这样,并且如果C# 支持它,那将在项目属性中(关于编译,而不是执行)。但是,C#支持这一点 - 唯一导入的命名空间是using当前文件中的指令指定的命名空间。

认为VB 有“默认命名空间”的想法,但 C# 绝对没有。个人认为这是一件好事。(您可能还想看看这个问题。我不知道它是否实际上是重复的,因为您的意图目前尚不清楚。)

于 2009-07-21T13:26:45.217 回答