【问题标题】:Namespace Shadowing Class Name命名空间影子类名称
【发布时间】:2015-04-09 13:16:03
【问题描述】:

我有以下情况:

具有命名空间 Library 的已编译库,其中包含类 Feauture

现在有另一个库正在开发中,它打算利用该功能,并被称为Library.Feature。最后还有第三个库:Library.Feature.UI

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

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

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

【问题讨论】:

  • “VS 在大喊大叫”是什么意思?这什么也没告诉我们。请提供实际的错误消息。
  • @ChrisDunaway 真的,这什么也没告诉你……?我的总体描述不足以确定问题可能是什么?我不需要你为我搜索警告,我已经尝试过了。
  • 是的,但是我们需要知道警告/错误以便更好地帮助您。 “VS 对尝试使用 Feature 类大喊大叫”这句话含糊不清,没有给我们足够的信息。

标签: c# namespaces


【解决方案1】:

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

using MyFeature = Library.Feature;

【讨论】:

  • 我试过了,但我仍然遇到同样的问题,VS 认为我在谈论命名空间......我认为这里可能还有另一个问题。
  • @Michael:请在您的问题中添加一些有关您的问题的更具体信息。最好是演示问题的小型独立代码示例。此外,更准确地描述您收到的编译器错误(VS 大喊大叫 描述性不是很好)将使我们能够更好地帮助解决您的问题。
【解决方案2】:

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

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

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

using FeatureClass = Library.Feature;

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

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

【讨论】:

    【解决方案3】:

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

    using FeatureClass = Library.Feature;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 2012-05-28
      相关资源
      最近更新 更多