我的解决方案中有一个班级EventArgs(Of T)
该类位于名称空间Acme.Infrastructure.Interface
中
EventArgs
命名空间中存在具有相同名称System
的类。
在我的解决方案的另一个项目中,我有一个课程Acme.BusinessModules.MyModule.MyClass
在尝试使用EventArgs
类时,我必须完全限定类名,否则编译器会认为我正在使用System.EventArgs
类。
我对命名空间解析的理解是,编译器首先会在当前命名空间中查找该类,然后查找其父级。似乎编译器在检查兄弟命名空间之前检查System
。
在兄弟姐妹面前检查System
是否正确?或者这种行为是由其他问题引起的(进口订单?)?
答案 0 :(得分:0)
查看所涉及的命名空间:
Acme.BusinessModules.MyModule
Acme.Infrastructure.Interface
在编译Acme.Infrastructure.Interface
中的类时,编译器没有理由查看Acme.BusinessModules.MyModule
。现在,如果您编写的代码在(例如)Acme.Infrastructure.Interface.SomethingElse
中,那么这将是另一回事 - 但在这里看起来编译器做的绝对正确。两个名称空间以Acme
开头的事实既不在这里,也不在那里。
正如你自己所说:
我对命名空间解析的理解是编译器首先在当前命名空间中查找该类,然后查找其父类。
这里的祖先名称空间是Acme.BusinessModules
和Acme
- 不是 Acme.Infrastructure.Interface
。
我也强烈建议您不创建与System
中的类名冲突的类名。这真的只是在寻找麻烦。