我正在构建一个类库并将其默认名称空间用作“System”。假设我正在创建一个通用数据结构,例如PriorityQueue并将其放在System.Collections.Generic命名空间下。
现在当我从另一个项目引用该库时,我再也看不到“System.Collections.Generic”命名空间下的PriorityQueue了。虽然该项目中引用了该库,但我无法访问其中的任何类。
我的问题是mscorlib和System.dll共享类似的命名空间,但仍然可以访问程序集中的类,但为什么不能挖掘?如果我在我的类库中的System.Collections.Generic命名空间下放置一个公共类并在项目中引用该库并使用“using System.Collections.Generic”之类的语句,那还为什么我不能在那里访问我的类呢? / p>
这是我做的一个实验,我知道在自定义类库中不鼓励使用System命名空间,但我想知道为什么在这种特殊情况下我无法访问我的类的原因?
请有人了解一下。
PS:上次我问过类似的问题,但说错了,所以人们被误解了,我没有得到答案。这次我尽量把它正确地说出来。很抱歉对于这个误会。答案 0 :(得分:1)
当您使用“项目参考”而不是“程序集参考”时,似乎会出现问题。
使用“装配参考”。
这是一个糟糕的想法,我不愿意深入研究潜在的原因。
<强>更新强>
我猜测当你使用项目引用(来自你的系统命名空间项目)时,问题出现了,因为构建不知道它应该从你引用的项目中解决依赖关系,而是试图从一个解析它已引用的程序集即System.dll。它显然不存在于System.dll中。如果您添加对dll的内置版本的直接引用,则构建将能够解析它。
答案 1 :(得分:0)
我刚刚测试了一些代码,我可以在我自己的项目中扩展System命名空间,然后在同一个解决方案中从其他项目中调用新类。我不知道你为什么不能这样做。