什么是名称空间与类名冲突问题的优雅解决方案?

时间:2011-04-04 09:12:36

标签: c# .net standards standards-compliance

令.NET烦恼的一件事是,名称空间应该是Pascal,这可能导致名称空间/类名冲突。

请考虑以下事项:

namespace MyCompany.MyProduct.SalesOrder {
    public class SalesOrder {
    }
}

这是完全有效的代码,但SalesOrder作为类的消费者现在必须使用MyCompany.MyProduct.SalesOrder.SalesOrder的完全限定名称,否则编译会导致恼人的'MyCompany.MyProduct.SalesOrder' is a 'namespace' but is used like a 'type'错误。

其他人正在做些什么来解决这个问题?有些地方,我看到其他人只是反对规则,并使用小写包,这确实吸引我,但我喜欢符合标准,并使用适当的外壳。在我的使用中,到目前为止,我已经在可能的情况下订阅了基于复数的名称空间名称的概念,但这有时看起来很丑陋。

我个人认为,.NET已经弄错了,应该像Java的软件包一样使用低级的名称空间。

2 个答案:

答案 0 :(得分:3)

SalesOrder作为命名空间的目的是什么?命名空间应该是一个“空格”,因此它应该涵盖多个类。遵循此规则,您不应该在类和名称空间之间发生冲突。

答案 1 :(得分:2)

它完全赞同你,这种行为绝对令人讨厌。我通常只是给命名空间一个更通用的名称。在您的情况下,我会选择类似MyCompany.MyProduct.SalesOrderManagementMyCompany.MyProduct.SalesOrders的内容。