让我对.NET感到恼火的事情之一是,名称空间应该是Pascal,这可能会导致名称空间/类名冲突。什么是名称空间vs classname冲突问题的优雅解决方案?
考虑以下几点:
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的包一样使用底层的名称空间。
不要将您的类命名为您的名称空间。这很少是必要的。 – Talljoe 2011-04-04 09:15:17
Talljoe,我不争论我的班级名称与名称空间名称相同,问题是有时发生冲突。例如,如果我有一个具有名称空间“MyProduct.Drawing”的绘图产品,因为我希望它对'System.Drawing'命名空间建模,但是后来我想在MyProduct.Drawing内部创建一个名为Drawing的类。另一个问题是,我有一个使用'System.Drawing'的产品,我有一个名为'Design'的类,它与'System.Drawing.Design'命名空间冲突。再次强调,我认为命名空间应该全部小写。 – 2011-04-04 09:26:55
您可以使用命名空间别名[http://msdn.microsoft.com/en-us/library/sf0df423.aspx]通过使其明确表达您想要的内容来解决此问题: using Design = MyProduct.Drawing.Design; – Talljoe 2011-04-04 09:33:19