【问题标题】:Why Does intellisense update like this为什么智能感知会这样更新
【发布时间】:2022-11-19 09:17:26
【问题描述】:

我正在创建一些像这样工作的 VB.NET 模块: 项目名称:CommonLib 命名空间:uix 模块:颜色 我有以下内容:

Namespace uix
    Public Module color
        Private Property TextToColor As Dictionary(Of Drawing.Color, String)
        Sub New()

        End Sub
        Public Function SearchColor(color As String) As Drawing.Color
        End Function

    End Module
End Namespace

它允许用户像这样访问:

CommonLib.uix.SearchColor()

代替:

CommonLib.uix.color.SearchColor()

【问题讨论】:

  • 看起来你在问Type Promotion——根据SearchColor()的定义,你的字典可能应该是Dictionary(Of String, Color)
  • 是的,但即使切换到字典,它仍然显示不正确
  • 什么显示不正确? Type 提升内容与 Dictionary 的定义无关,而是与 SearchColor() 方法的功能相关——您是否阅读了我链接的文档中的内容?
  • 是的,所以如果我是正确的,我需要在命名空间中创建另一个同名的类来打败促销活动吗?
  • 您可以重命名Namespace uix.color(可能更好Namespace Uix.Color,同时将模块重命名为Color)——但不确定为什么要使用模块

标签: vb.net


【解决方案1】:

这就是模块的工作方式。您不必使用类型名称来限定他们的成员。我相信这样做是为了与工作方式相同的 VB6 代码兼容。没有这种行为,如果不添加限定类型,许多升级的 VB6 代码将无法工作。

如果您不想要该行为,则创建一个包含 Shared 成员的类而不是模块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多