项目通常分为文件夹,通常希望这些文件夹映射到代码 namespace 。但是,在我的许多核心项目中,我拥有合并到现有 namespace 中的类-例如,我有一个MVC引用库,可以将其他类型添加到System.Web.MvcSystem.ComponentModel.DataAnnotations中。

在其他项目中,我可能有一套接口(interface)和这些接口(interface)的默认实现。因此我可能会将代码文件拆分为两个单独的文件夹(例如“对象”和“接口(interface)”),但我不想拥有ObjectsInterfaces子命名空间。

同样,我经常为其他库中的类型编写扩展方法-例如System.String,我将其合并到System命名空间中,因此一旦您引用该程序集,它们就已经存在了。

因此,给出这样的项目结构(针对第一个答案,该项目旨在产生具有所有 namespace 的单个程序集;并且可能是可能已签名的dll):

Our.Core.Library
|->System
|  |->StringExtensions.cs
|->System.Web.Mvc
|  |->AnotherModelBinder.cs
|->OurCoreClass.cs

在上面,我希望添加到根目录的新文件位于 namespace Our.Core.Library中,但我希望将添加到System和System.Web.Mvc文件夹的新文件分别位于SystemSystem.Web.Mvc中。但是VS会给他们一个默认的命名空间Our.Core.Library.System

这是一个小问题,但是我希望能够覆盖特定代码文件夹的默认 namespace ,以便我可以控制它。任何想法如何实现这一目标?我为项目尝试了一个空的默认 namespace ,从逻辑上讲,这可能使它可用于子文件夹,但显然不适用于根目录。但是,“VS属性”页面不接受空的 namespace 。

理想情况下,这是一个解决方案,我可以轻松地在整个开发团队中进行复制,以使其他开发人员能够添加代码文件,同时遵守在架构师/规划阶段提出的命名空间结构。

最佳答案

每个C#项目设置在“应用程序”选项卡中都有一个Default namespace选项,您可以将其更改为将更多文件添加到项目时生效的任何其他值。每个项目仅允许一项设置

您可以将您的项目分为多个项目,并且对于不同的项目,默认值可以不同

关于c# - 如何在新的CS文件中覆盖VS2010的自动文件夹->命名空间映射,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8895166/

10-14 14:23
查看更多