命名空间影子类名称

问题描述 投票:0回答:4

我有以下情况:

具有命名空间

Library
的已编译库,其中包含类
Feauture

现在还有另一个库正在开发中,它打算利用该功能,被称为

Library.Feature
。最后还有第三个库:
Library.Feature.UI

Library.Feature.UI
项目中工作时,该项目引用了其他两个库,VS 经常大喊大叫尝试使用
Feature
类,因为它主要将其视为命名空间。

我尝试了一些不同的 using 指令来解决这个问题,并尝试限定类名,但没有任何效果。

假设我无法更改任何命名空间或现有类名,有没有办法避免这个问题?

c# namespaces
4个回答
0
投票

您可以使用完全限定名称,在其中指定命名空间和类型名称,也可以使用 using 指令 创建别名:

using MyFeature = Library.Feature;

0
投票

您可以使用别名指令为任何名称空间指定不同的名称,然后使用该别名来引用该名称空间。

通过这样做,您可以区分类和命名空间。

使用命名空间时,在顶部写入以下内容。

using FeatureClass = Library.Feature;

更多这方面的知识,您可以参考: https://msdn.microsoft.com/en-us/library/aa664765%28v=vs.71%29.aspx

如果您还有任何其他问题,请告诉我...


0
投票

理论上,您应该能够在不更改名称空间的情况下解决这个问题,但我还没有找到任何可行的解决方案。这是一个 Visual Studio IntelliSense 问题,原因在于它解决依赖关系的方式。

发生这种情况的原因如下: 编译器和 IntelliSense 优先考虑本地命名空间(您工作的命名空间)而不是全局命名空间(本地命名空间之外的任何内容)。因此,如果命名重叠,IntelliSense 将查看错误的类。理论上,您应该能够使用:完整限定名称、“global::”关键字或命名空间别名,但我还没有发现这些方法中的任何一种都可以使 IntelliSense 满意。

因此我采用更改命名空间来避免这些冲突。


-1
投票

这应该可以解决问题(参考文献)

using FeatureClass = Library.Feature;
© www.soinside.com 2019 - 2024. All rights reserved.