在相同的命名空间位于当前命名空间内时引用命名空间

时间:2013-09-16 08:28:16

标签: c#

我有一个引用的DLL,其名称空间为

Model

有一个班级

Item

所以Model.Item是我想要引用的东西。

但是在我的项目中,我处于

的命名空间
Logic.Section

并且也包括在内

Logic.Model

下面有各种课程。

所以当我尝试引用Model.Item的DLL时,它不会让我因为它只跳回到Logic.Model

在这种情况下,我通常会重构我的命名空间,但有没有办法告诉它从最高级别的命名空间开始并返回。

4 个答案:

答案 0 :(得分:8)

您可以使用命名空间别名

using Co = Company.Proj.Nested; 

http://msdn.microsoft.com/en-us/library/dfb3cx8s.aspx

或在您的情况下像

using M = Model

答案 1 :(得分:1)

is there a way to tell it to start at the highest level namespaces and go back down.

using global::Model.Item;

答案 2 :(得分:0)

这可能发生在任何第三方DLL,库中,通常我所做的就是将命名空间命名为

using myModelInMyDll = Model.Item 

然后使用myModelInMyDll

答案 3 :(得分:0)

您可以使用global namespace alias强制命名空间解析从最高级别开始。所以,在Logic命名空间

using Model; // resolves to Logic.Model
using global::Model; // resolves to Model.

如果您有许多类名称和命名空间名称发生冲突,则应考虑重新编写命名策略。如果这是第三方库的结果(有时是),您可以alias使用的类:

using MyModel = global::Model; //aliases the namespace, so use MyModel.Item
using MyItem = global::Model.Item; //aliases the class, so use MyItem