vb.net系统命名空间与同级命名空间冲突
我的解决方案中有一个类vb.net系统命名空间与同级命名空间冲突,.net,vb.net,namespaces,.net,Vb.net,Namespaces,我的解决方案中有一个类EventArgs(Of T)。 此类位于命名空间Acme.Infrastructure.Interface 系统命名空间中存在同名的类EventArgs 在我的解决方案的另一个项目中,我有一个类Acme.BusinessModules.MyModule.MyClass 尝试使用EventArgs类时,我必须完全限定类名,否则编译器会认为我在使用System.EventArgs类 我对名称空间解析的理解是,编译器将首先在当前名称空间中查找类,然后查找其父类。编译器似乎在签入
EventArgs(Of T)
。此类位于命名空间
Acme.Infrastructure.Interface
系统
命名空间中存在同名的类EventArgs
在我的解决方案的另一个项目中,我有一个类Acme.BusinessModules.MyModule.MyClass
尝试使用
EventArgs
类时,我必须完全限定类名,否则编译器会认为我在使用System.EventArgs
类
我对名称空间解析的理解是,编译器将首先在当前名称空间中查找类,然后查找其父类。编译器似乎在签入同级名称空间之前先签入System
在兄弟姐妹之前检查系统是否正确?或者这种行为是由其他问题(导入顺序)引起的?请查看所涉及的名称空间:
Acme.BusinessModules.MyModule
Acme.Infrastructure.Interface
Acme.BusinessModules.MyModule
中编译类时,编译器没有理由查看Acme.Infrastructure.Interface
。现在,如果您正在编写的代码位于(比如)Acme.Infrastructure.Interface.SomethingElse中,那么这将是一个不同的问题-但在这里,编译器似乎做了完全正确的事情。两个名称空间都以Acme
开头这一事实既不存在也不存在
正如你自己所说:
我对名称空间解析的理解是,编译器将首先在当前名称空间中查找类,然后查找其父类
这里的祖先名称空间是Acme.BusinessModules
和Acme
——而不是Acme.Infrastructure.Interface
我还强烈建议您不要创建与
系统
中的类名冲突的类名。这真的只是自找麻烦。看看所涉及的名称空间:
Acme.BusinessModules.MyModule
Acme.Infrastructure.Interface
Acme.BusinessModules.MyModule
中编译类时,编译器没有理由查看Acme.Infrastructure.Interface
。现在,如果您正在编写的代码位于(比如)Acme.Infrastructure.Interface.SomethingElse中,那么这将是一个不同的问题-但在这里,编译器似乎做了完全正确的事情。两个名称空间都以Acme
开头这一事实既不存在也不存在
正如你自己所说:
我对名称空间解析的理解是,编译器将首先在当前名称空间中查找类,然后查找其父类
这里的祖先名称空间是Acme.BusinessModules
和Acme
——而不是Acme.Infrastructure.Interface
我还强烈建议您不要创建与
系统
中的类名冲突的类名。这真的是自找麻烦。好吧,那只是我当时对名称空间系统的误解,是时候读一读了。具有相同名称的类是由SCSF创建的@DaSilva_Ireland:我从未使用过SCSF,但您应该绝对了解是否可以禁用该类生成(或者,如果是一次性的,就删除它)。这只会给你带来痛苦。好吧,那只是我当时对名称空间系统的误解,是时候做一些阅读了。具有相同名称的类是由SCSF创建的@DaSilva_Ireland:我从未使用过SCSF,但您应该绝对了解是否可以禁用该类生成(或者,如果是一次性的,就删除它)。这只会给你带来痛苦。