命名空间和类名冲突
Posted
技术标签:
【中文标题】命名空间和类名冲突【英文标题】:Namespace & Class name collide 【发布时间】:2014-07-01 15:49:30 【问题描述】:将类命名为命名空间结尾时的最佳做法是什么?
例子:
Successful.Domain.Resource
public class Resource
Successful.Data.Resource
public class Resources
如果我想在 Success.Data 命名空间中使用 Resource 类,我不能随意引用 Resource。我需要像 Domain.Resource.Resource 一样声明它的命名空间
我使用 Resharper 并在文件夹中构建我的所有代码,这就是我有这样的命名空间,文件夹结构示例:
Successful.Domain(命名空间)
资源(文件夹) Resource.cs ResourceLocation.cs ResourceSettings.csSuccessful.Data(命名空间)
资源(文件夹) Resources.cs【问题讨论】:
我不确定这是否会有所帮助,但您是否尝试过using Successful.Domain.Resource = Rsrc;
?这可能有助于避免名称冲突。我很好奇这是否可行-但不确定(因此尚未将其发布为答案)。
【参考方案1】:
见:Framework Design Guidelines - Names of Namespaces
X DO NOT为命名空间和该命名空间中的类型使用相同的名称。
因此建议使用与命名空间不同的类名。
你也可以看到Eric Lippert:Do not name a class the same as its namespace, Part One的这篇文章
【讨论】:
感谢 Habib 提供的链接,很好地解释了最佳实践。 @Habib 感谢您的链接。看起来 Eric 那个家伙很懂 C# :) @OP 在遵循 Habib 的建议之后,更改文件夹结构以匹配名称空间并不是一个坏主意,除非您的应用程序是 Web 应用程序。 ReSharper 有一个快速修复(也可能是全局修复)来为您执行此操作。【参考方案2】:不建议命名空间和类使用相同的名称。
在这种情况下,我将命名空间命名为 Resources
注意这是复数,因为命名空间提供了类型的逻辑分组。
类名应该更具体。 Resource
告诉你什么?嗯没事。正确命名你的类,类名应该传达它的作用。换句话说,它应该是不言自明的。在不知道 Recource 是什么的情况下,我想不出一个好名字。
@Habib got it right 有很好的链接,所以我无法为您提供一些有用的链接。
【讨论】:
以上是关于命名空间和类名冲突的主要内容,如果未能解决你的问题,请参考以下文章