vb.net系统名称空间与兄弟名称空间冲突

时间:2011-11-16 17:27:58

标签: .net vb.net namespaces

我的解决方案中有一个班级EventArgs(Of T) 该类位于名称空间Acme.Infrastructure.InterfaceEventArgs命名空间中存在具有相同名称System的类。

在我的解决方案的另一个项目中,我有一个课程Acme.BusinessModules.MyModule.MyClass
在尝试使用EventArgs类时,我必须完全限定类名,否则编译器会认为我正在使用System.EventArgs类。

我对命名空间解析的理解是,编译器首先会在当前命名空间中查找该类,然后查找其父级。似乎编译器在检查兄弟命名空间之前检查System

在兄弟姐妹面前检查System是否正确?或者这种行为是由其他问题引起的(进口订单?)?

1 个答案:

答案 0 :(得分:0)

查看所涉及的命名空间:

  • Acme.BusinessModules.MyModule
  • Acme.Infrastructure.Interface

在编译Acme.Infrastructure.Interface中的类时,编译器没有理由查看Acme.BusinessModules.MyModule。现在,如果您编写的代码在(例如)Acme.Infrastructure.Interface.SomethingElse中,那么这将是另一回事 - 但在这里看起来编译器做的绝对正确。两个名称空间以Acme开头的事实既不在这里,也不在那里。

正如你自己所说:

  

我对命名空间解析的理解是编译器首先在当前命名空间中查找该类,然后查找其父类。

这里的祖先名称空间是Acme.BusinessModulesAcme - 不是 Acme.Infrastructure.Interface

我也强烈建议您创建与System中的类名冲突的类名。这真的只是在寻找麻烦。