我有一个我引用的 DLL,它的命名空间为
Model
有一个班级
Item
所以 Model.Item 是我想要参考的东西。
但是在我的项目中,我位于
Logic.Section
这也包括在内
Logic.Model
在它下面有各种类。
因此,当我尝试引用 Model.Item 的 DLL 时,它不会让我这样做,因为它只会跳回 Logic.Model
在这种情况下,我通常会重组我的命名空间,但是有没有办法告诉它从最高级别的命名空间开始并返回。
我有一个我引用的 DLL,它的命名空间为
Model
有一个班级
Item
所以 Model.Item 是我想要参考的东西。
但是在我的项目中,我位于
Logic.Section
这也包括在内
Logic.Model
在它下面有各种类。
因此,当我尝试引用 Model.Item 的 DLL 时,它不会让我这样做,因为它只会跳回 Logic.Model
在这种情况下,我通常会重组我的命名空间,但是有没有办法告诉它从最高级别的命名空间开始并返回。
您可以使用命名空间别名
using Co = Company.Proj.Nested;
http://msdn.microsoft.com/en-us/library/dfb3cx8s.aspx
或者在你的情况下
using M = Model
is there a way to tell it to start at the highest level namespaces and go back down.
using global::Model.Item;
您可以使用全局命名空间别名,强制命名空间解析从最高级别开始。所以,在Logic
命名空间内
using Model; // resolves to Logic.Model
using global::Model; // resolves to Model.
如果您有许多类和命名空间名称发生冲突,您应该考虑重新制定命名策略。如果这是第三方库的结果,有时是这样,您可以给使用的类起别名:
using MyModel = global::Model; //aliases the namespace, so use MyModel.Item
using MyItem = global::Model.Item; //aliases the class, so use MyItem
这可能发生在任何第 3 方 DLL、库中,通常我所做的是将命名空间命名为
using myModelInMyDll = Model.Item
然后使用 myModelInMyDll