【发布时间】:2011-01-16 15:10:02
【问题描述】:
我想对任何未将其内容包装在显式 namespace 中的 .cs 源文件的内容强制使用根命名空间。换句话说,我想将类和其他命名空间级别的结构保留在默认命名空间之外。
(使用 Visual Studio 在 Windows .NET 环境中工作)
在下面的示例中,我想强制 Car 类默认进入 MotorIndustry 命名空间,即使它没有显式编码命名空间。
Vehicle.cs(有命名空间)
namespace MotorIndustry {
public class Vehicle {
// ...
}
}
Car.cs(无命名空间/默认)
public class Car : Vehicle {
//...
}
有没有办法通过 Visual Studio 中的项目设置、AssemblyInfo.cs 文件或其他方式来完成这种“根命名空间”的修改行为?
我的理解是 VB.NET 有这样的特性,但 C# 的行为不同?
关于我为什么要问这个的一些上下文:我有数百个类,而程序员忘记将命名空间包装在一些周围。当我从其他项目中引用程序集时,它会使用最终导致一些模棱两可的情况的类污染默认命名空间。
【问题讨论】:
-
不,C# 中没有像 VB.NET 中那样全局命名类文件的能力。 John 有你的答案:第三方重构工具。
-
我认为 Visual Studio 中的网站项目(不是 Web 应用程序)的独特情况往往不会为 App_Code 特殊文件夹下编写的类生成命名空间,或者至少不会为用户控件和页面生成命名空间,并且我认为这是问题开始的地方。无论如何,我已经开始将所有内容包装在显式名称空间中,甚至用户控制 .ascx 和 asp.net 页面,以便对所有内容进行更“强类型”的访问。随着项目的发展,它更易于管理。
标签: c# .net visual-studio namespaces global-namespace